· 9 years ago · Nov 08, 2016, 12:28 PM
1USE [Biolife]
2GO
3/****** Object: StoredProcedure [dbo].[ComandaClientiPozitiiPartial_SAVE] Script Date: 11/8/2016 10:38:35 AM ******/
4SET ANSI_NULLS ON
5GO
6SET QUOTED_IDENTIFIER ON
7GO
8
9
10ALTER PROCEDURE [dbo].[ComandaClientiPozitiiPartial_SAVE]
11 @SYS_DIVID INT = NULL
12, @SYS_UNITID INT = NULL
13, @SYS_PARTID INT = NULL
14, @SYS_LANGID NVARCHAR(20) = NULL
15, @SYS_USERID INT = NULL
16, @SYS_USER NVARCHAR(50) = NULL
17, @SYS_OPCODE VARCHAR(20) = NULL
18
19, @ClientId INT = NULL
20, @SorderCapId INT = NULL
21, @DocId INT = NULL
22, @TipDocId INT = NULL
23, @IesCapId INT = NULL
24, @Datafactura DATE = NULL
25, @DataCurs DATE = NULL
26, @Validata BIT = NULL
27, @Integral INT = NULL
28
29, @AgentId INT = NULL
30, @Discount DECIMAL(18,5) = NULL
31, @Observatii NVARCHAR(100) = NULL
32, @PlajaId INT = NULL
33, @CuChitanta BIT = NULL
34
35, @TermenPlataId INT = NULL
36
37, @UnitateId INT = NULL
38, @DelegNume NVARCHAR(100) = NULL
39, @DelegPrenume NVARCHAR(100) = NULL
40, @DelegAct NVARCHAR(50) = NULL
41, @DelegElibAct NVARCHAR(50) = NULL
42, @DelegAuto NVARCHAR(50) = NULL
43, @DataExpediere DATE = NULL
44, @OraExpediere NVARCHAR(10) = NULL
45
46, @GestiuneIds NVARCHAR(max) = NULL
47, @ParentIesPozId INT = NULL
48, @InclusivDetalii BIT = NULL
49, @XMLValues XML = NULL
50
51
52AS
53
54BEGIN
55 DECLARE -- SETARI
56 @setare97 NVARCHAR(20) -- Credit control la nivel de partener sau client --> OBSOLETE
57 , @setare105 INT -- Lista preturi (0 - stoc; 1 - catalog; 2 - reguli; 3 - divizie)
58 , @setare247 NVARCHAR(20) -- Nr zecimale pret vanzare
59 , @setare350 INT -- Nr zecimale cant iesire
60 , @Setare351 NVARCHAR(20) -- Nr zecimale valoare iesire
61 , @setare377 INT -- Nr zecimale conta
62 , @setare381 INT -- Vanzare pe baza de comanda client (1 - Pot vinde peste comanda)
63 , @setare389 INT -- Suplimentare curs valutar
64 , @setare402 INT -- Nr zecimale pret valuta vanzare
65 , @Setare420 NVARCHAR(20) -- Mod descarcare gestiune (FIFO,FEFO,CMP,LIFO,Explicit)
66 , @Setare520 INT -- Vanzari sub pret cost (0 - Se permite; 1 - Blocare)
67 , @setare529 INT -- Nr zecimale pret amanunt
68 , @Setare532 BIT -- Actualizare cantitate livrata pe contract din factura fara stoc
69
70 SELECT @setare97 = dbo.valoaresetare( 97,@SYS_UNITID,@SYS_DIVID)
71 , @setare105 = dbo.Valoaresetare(105,@SYS_UNITID,@SYS_DIVID)
72 , @setare247 = dbo.valoaresetare(247,@SYS_UNITID,@SYS_DIVID)
73 , @setare350 = dbo.valoaresetare(350,@SYS_UNITID,@SYS_DIVID)
74 , @setare351 = dbo.valoaresetare(351,@SYS_UNITID,@SYS_DIVID)
75 , @setare377 = dbo.Valoaresetare(377,@SYS_UNITID,@SYS_DIVID)
76 , @setare381 = dbo.ValoareSetare(381,@SYS_UNITID,@SYS_DIVID)
77 , @setare389 = dbo.Valoaresetare(389,@SYS_UNITID,@SYS_DIVID)
78 , @setare402 = dbo.Valoaresetare(402,@SYS_UNITID,@SYS_DIVID)
79 , @Setare420 = dbo.Valoaresetare(420,@SYS_UNITID,@SYS_DIVID)
80 , @Setare520 = dbo.Valoaresetare(520,@SYS_UNITID,@SYS_DIVID)
81 , @setare529 = dbo.Valoaresetare(529,@SYS_UNITID,@SYS_DIVID)
82 , @setare532 = dbo.Valoaresetare(532,@SYS_UNITID,@SYS_DIVID)
83
84 IF @ClientId IS NULL
85 SELECT @ClientId = cap.ClientID
86 FROM inv.IesCap cap (NOLOCK)
87 WHERE cap.IesCapId = @IesCapId
88
89 SELECT @Setare389 = ISNULL(SuplimentareCursValutar, @Setare389)
90 FROM dbo.tblClienti (NOLOCK)
91 WHERE ClientId = @ClientId
92 AND FirmaId = @SYS_UNITID
93 AND DivizieId = @SYS_DIVID
94
95 DECLARE
96 @DataCrt DATE = GETDATE()
97
98 , @FirmaId INT
99 , @DivizieId INT
100 , @DataValidare DATETIME
101 , @ModPlataId INT
102 , @ValutaCapId CHAR(3)
103 , @CursCap DECIMAL(18,5)
104
105 , @ValutaDefaultId CHAR(3)
106
107 , @TipFactStoc BIT
108 , @Serviciu BIT
109 , @PastrareCurs BIT
110 , @ReaplicareReguli BIT
111 , @RecalculDinGrile BIT
112
113 , @SOrderDate DATE
114 , @TaskId INT
115 , @ProiectId INT
116
117 , @ProdusId INT
118 , @SorderPozId INT
119 , @ParentSorderPozId INT
120 , @cantDeInserat DECIMAL(18,5)
121 , @cantStoc DECIMAL(18,5)
122 , @IntrPozId INT
123 , @GestiuneId INT
124 , @SerieIntrare NVARCHAR(50)
125 , @LotIntrare NVARCHAR(50)
126 , @DataFabricare DATE
127 , @DataExpirare DATE
128 , @ClientCustodieId INT
129 , @PretRecomandat DECIMAL(18, 5)
130
131 SELECT @ValutaDefaultId = ValutaDefaultId
132 FROM dbo.tblParteneriFirma (NOLOCK)
133 WHERE PartenerFirmaId = @SYS_PARTID
134
135 SELECT @FirmaId = FirmaId
136 , @DivizieId = DivizieId
137 , @DataCurs = COALESCE(dataCurs,DataIes,@DataCrt)
138 , @DataValidare = DataValidare
139 , @Datafactura = ISNULL(DataIes, @DataCrt)
140 , @TermenPlataId = ISNULL(@TermenPlataId, TermenPlataId)
141 , @ModPlataId = ISNULL(@ModPlataId, ModPlataId)
142 , @ValutaCapId = CASE WHEN DocId IN (5,8) THEN @ValutaDefaultId ELSE ISNULL(ValutaId,@ValutaDefaultId) END
143 , @CursCap = CASE WHEN DocId IN (5,8) THEN 1 ELSE ISNULL(CursValutar,1) END
144 , @TipDocId = TipDocId
145 FROM inv.IesCap (NOLOCK)
146 WHERE IesCapId = @IesCapId
147
148 SELECT @TipFactStoc = Stoc
149 , @Serviciu = ISNULL(Service,0)
150 , @PastrareCurs = PastrareCurs
151 , @RecalculDinGrile = RecalcPretDinGrilaOferta
152 FROM inv.TipDoc (NOLOCK)
153 WHERE TipDocId = @TipDocId
154
155 SELECT @ReaplicareReguli = CASE WHEN ISNULL(@setare105,0) <> 2 OR ISNULL(@PastrareCurs,0) = 1 OR ISNULL(@RecalculDinGrile,0) = 1
156 THEN 0
157 ELSE MAX(RR.ReaplicareReguli)
158 END
159 FROM(SELECT CAST(ISNULL(ReaplicareReguli,0) AS INT) AS ReaplicareReguli
160 FROM inv.TipDoc (NOLOCK)
161 WHERE TipDocId = @TipDocId
162
163 UNION ALL
164
165 SELECT CAST(ISNULL(ReaplicareReguli,0) AS INT)
166 FROM dbo.tblLimiteParteneriClienti lpc (NOLOCK)
167 INNER JOIN dbo.vwUnitati u (NOLOCK)
168 ON u.PartenerId = lpc.PartenerId
169 WHERE u.UnitateId = @ClientId) RR
170
171 IF(@SorderCapId IS NULL)
172 BEGIN
173 SELECT TOP 1 @SorderCapId = s.SorderCapId
174 FROM dbo.SOrderCap s (NOLOCK)
175 WHERE s.ClientID = @ClientId
176 AND s.FirmaId = @SYS_UNITID
177 AND s.DivizieId = @SYS_DIVID
178 ORDER BY ISNULL(s.SOrderNumber,'') + ISNULL(' - ' + CONVERT(varchar(10),s.SOrderDate,103),'')
179 END
180
181 SELECT @SOrderDate = SOrderDate
182 , @TaskId = TaskId
183 , @ProiectId = ProiectId
184 FROM dbo.SOrderCap (NOLOCK)
185 WHERE SOrderCapId=@SorderCapId
186
187 DECLARE @Expediere NVARCHAR(30) = ''
188 SET @Expediere = @Expediere + CAST(@DataExpediere AS VARCHAR(10)) + ' '
189 + CAST(@OraExpediere AS VARCHAR(10)) + ':000'
190
191 DECLARE @Ordine INT
192 SELECT @Ordine = MAX(Ordine)
193 FROM inv.IesPoz (NOLOCK)
194 WHERE IesCapId = @IesCapId
195
196 SET @Ordine = ISNULL(@Ordine,0) + 1
197
198 BEGIN TRY
199
200 BEGIN TRANSACTION
201
202 IF @DataValidare IS NOT NULL
203 BEGIN
204 DECLARE @eroareDocValidat NVARCHAR(MAX)
205 SELECT @eroareDocValidat = syserp.ERP.textdictionary('Documentul a fost validat',@SYS_LANGID)
206
207 RAISERROR(@eroareDocValidat,16,1)
208 END
209
210 IF (@FirmaId <> @SYS_UNITID OR @DivizieId <> @SYS_DIVID)
211 RAISERROR('@UNITERROR@',16,1)
212
213 SELECT DISTINCT
214 CAST(SUBSTRING(p.value('@Id', 'VARCHAR(1000)'), CHARINDEX('R', p.value('@Id', 'VARCHAR(1000)')) + 1,LEN(p.value('@Id', 'VARCHAR(1000)'))) AS INT) AS SOrderPozId
215 , CASE WHEN ISNULL(p.value('(./CantitateFactura)[1]', 'NVARCHAR(50)'),'') <> ''
216 THEN p.value('(./CantitateFactura)[1]', 'DECIMAL(18,5)')
217 ELSE NULL
218 END AS Cantitate
219 , CASE WHEN ISNULL(p.value('(./Procent)[1]', 'NVARCHAR(50)'),'') <> ''
220 THEN p.value('(./Procent)[1]', 'DECIMAL(18,5)')
221 ELSE NULL
222 END AS Procent
223 , CASE WHEN ISNULL(p.value('(./Valoare)[1]', 'NVARCHAR(50)'),'') <> ''
224 THEN p.value('(./Valoare)[1]', 'DECIMAL(18,5)')
225 ELSE NULL
226 END AS Valoare
227 , CAST(LTRIM(RTRIM(p.value('(./IesCapid)[1]', 'VARCHAR(1000)'))) AS INT) AS IesCapId
228 , p.value('(./Adauga)[1]', 'BIT') AS Adauga
229 INTO #PozitiiXml
230 FROM @XmlValues.nodes('/Root/Linie') t (p)
231
232 --SELECT * FROM #PoztiiXml
233
234 SELECT ISNULL(sp.ParentSorderPozId,p.ParentSorderPozId) as ParentSorderPozId
235 , sp.SorderPozId as SorderPozParentId
236 , p.SOrderPozId
237 , ISNULL(p.ContractClientPozId,sp.ContractClientPozId) as ContractClientPozId
238 , p.ContineDetalii
239 , p.ProdusId
240 , p.IntrPozId
241 , p.GestiuneId
242 , p.SerieIntrare
243 , p.LotIntrare
244 , p.DataFabricare
245 , p.DataExpirare
246 , p.ClientCustodieId
247 , ROUND(COALESCE(temp.Cantitate * ISNULL(NULLIF(pm.Factor,0),1)
248
249 ,temp.Valoare / NULLIF(ISNULL(p.PretValutaRedus,p.PretValuta),0)
250
251 ,CASE WHEN ISNULL(@TipFactStoc,0) = 0
252 THEN p.Cant - ISNULL(p.CantLivrata,0)
253 ELSE CASE WHEN sp.SorderPozId IS NOT NULL THEN p.Cant
254 ELSE p.Cant - ISNULL(p.CantRezervata,0) - ISNULL(p.CantLivrata,0)
255 - CASE WHEN spp.SorderPozId IS NULL THEN 0
256 ELSE p.Cant * ISNULL(spp.CantRezervata,0) / ISNULL(NULLIF(spp.Cant,0),1)
257 END
258 END
259 END * ISNULL(temp.Procent/100.00,1)
260 ),@setare350) AS CantitateXml
261 , ROUND(CASE WHEN ISNULL(@TipFactStoc,0) = 0
262 THEN p.Cant - ISNULL(p.CantLivrata,0)
263 ELSE CASE WHEN sp.SorderPozId IS NOT NULL THEN p.Cant
264 ELSE p.Cant - ISNULL(p.CantRezervata,0) - ISNULL(p.CantLivrata,0)
265 - CASE WHEN spp.SorderPozId IS NULL THEN 0
266 ELSE p.Cant * ISNULL(spp.CantRezervata,0) / ISNULL(NULLIF(spp.Cant,0),1)
267 END
268 END
269 END,@setare350) AS CantitateNelivrata
270 INTO #ComenziPartiale
271 FROM #PozitiiXml temp
272 INNER JOIN dbo.SOrderPoz p (NOLOCK)
273 ON p.SOrderPozId = temp.SOrderPozId
274 LEFT JOIN dbo.SorderPoz sp (NOLOCK)
275 ON sp.SOrderPozId = p.SOrderPozParentId
276 LEFT JOIN dbo.SOrderPoz spp (NOLOCK)
277 ON spp.SOrderPozId = ISNULL(sp.ParentSorderPozId,p.ParentSorderPozId)
278 LEFT JOIN dbo.tblProduseUm pm (NOLOCK)
279 ON pm.Produsid = p.ProdusId
280 AND pm.UmId = ISNULL(p.UmId,sp.UmId)
281 AND ISNULL(pm.Sales,0) = 1
282 WHERE temp.IesCapId = @IesCapId
283 AND ISNULL(temp.Adauga,0) = 1
284
285 --SELECT * FROM #ComenziPartiale
286
287 IF ISNULL(@InclusivDetalii,0) = 1 --Sterg parintii existenti si inserez dupa formula CantDeFacturat = CantParinte * CantDetaliiXml / CantDetalii
288 BEGIN
289 DELETE FROM #ComenziPartiale
290 WHERE ISNULL(ContineDetalii,0) = 1
291
292 ;WITH Parent
293 (SorderPozId
294 ,CantDetaliiXml)
295 AS(
296 SELECT temp.ParentSorderPozId as SorderPozId
297 , SUM(temp.CantitateXml) AS CantDetaliiXml
298 FROM #ComenziPartiale temp
299 INNER JOIN dbo.SorderPoz s (NOLOCK)
300 ON s.SOrderPozId = temp.ParentSorderPozId
301 GROUP BY temp.ParentSorderPozId
302 )
303
304 INSERT INTO #ComenziPartiale
305 (SOrderPozId
306 ,ContractClientPozId
307 ,ContineDetalii
308 ,ProdusId
309 ,CantitateXml
310 ,CantitateNelivrata)
311 SELECT cte.SorderPozId
312 , s.ContractClientPozId
313 , 1
314 , s.ProdusId
315 , ROUND(s.Cant * cte.CantDetaliiXml / ISNULL(NULLIF(SUM(det.Cant),0),1),@setare350)
316 , CASE WHEN ISNULL(@TipFactStoc,0) = 0
317 THEN s.Cant - ISNULL(s.CantLivrata,0)
318 ELSE s.Cant - ISNULL(s.CantLivrata,0) - ISNULL(s.CantRezervata,0)
319 END
320 FROM Parent cte
321 INNER JOIN dbo.SOrderPoz s (NOLOCK)
322 ON s.SOrderPozId = cte.SorderPozId
323 INNER JOIN dbo.SOrderPoz det (NOLOCK)
324 ON det.ParentSorderPozId = cte.SorderPozId
325 WHERE det.SOrderPozParentId IS NULL
326 GROUP BY cte.SorderPozId
327 , s.ContractClientPozId
328 , s.ProdusId
329 , s.Cant
330 , cte.CantDetaliiXml
331 , s.CantLivrata
332 , s.CantRezervata
333
334 --SELECT * FROM #ComenziPartiale
335 END
336
337 IF ISNULL(@InclusivDetalii,0) = 0 --Inserez detaliile
338 BEGIN
339
340 INSERT #ComenziPartiale
341 ( ParentSorderPozId
342 , SorderPozId
343 , ContractClientPozId
344 , ProdusId
345 , CantitateXml
346 , CantitateNelivrata)
347 SELECT temp.SOrderPozId
348 , det.SOrderPozId
349 , det.ContractClientPozId
350 , det.ProdusId
351 , ROUND(det.Cant / ISNULL(NULLIF(parent.Cant,0),1) * temp.CantitateXml,@setare350)
352 , ROUND(det.Cant - ISNULL(det.CantLivrata,0)
353 - CASE WHEN ISNULL(@TipFactStoc,0) = 0 THEN 0
354 ELSE det.Cant * ISNULL(parent.CantRezervata,0) / ISNULL(NULLIF(parent.Cant,0),1)
355 END,@setare350)
356 FROM #ComenziPartiale temp
357 INNER JOIN dbo.SOrderPoz parent (NOLOCK)
358 ON parent.SOrderPozId = temp.SOrderPozId
359 INNER JOIN dbo.Sorderpoz det (NOLOCK)
360 ON det.ParentSorderPozId = parent.SOrderPozId
361 WHERE ISNULL(temp.ContineDetalii,0) = 1
362 AND det.SOrderPozParentId IS NULL
363
364
365 IF ISNULL(@TipFactStoc,0) = 1 --Inserez rezervarile detaliilor
366 BEGIN
367 DECLARE @SorderPozParentId INT = 0
368 , @CantXml DECIMAL(18,5)
369 WHILE EXISTS(SELECT TOP 1 SorderPozid
370 FROM #ComenziPartiale
371 WHERE ParentSorderPozId IS NOT NULL
372 AND SorderPozParentId IS NULL
373 AND SorderPozId > @SorderPozParentId)
374 BEGIN
375 SELECT TOP 1 @SorderPozParentId = SorderPozId
376 , @CantXml = CantitateXml
377 FROM #ComenziPartiale
378 WHERE ParentSorderPozId IS NOT NULL
379 AND SorderPozParentId IS NULL
380 AND SOrderPozId > @SorderPozParentId
381
382 DECLARE @RezervareId INT = 0
383 , @CantRezervare DECIMAL(18,5)
384
385 WHILE EXISTS(SELECT TOP 1 SorderPozId
386 FROM dbo.SorderPoz (NOLOCK)
387 WHERE SorderPozParentId = @SorderPozParentId
388 AND SorderPozId > @RezervareId
389 AND @CantXml > 0
390 AND Cant > 0)
391 BEGIN
392 SELECT TOP 1 @RezervareId = SorderPozId
393 , @CantRezervare = CASE WHEN Cant <= @CantXml
394 THEN Cant
395 ELSE @CantXml
396 END
397 FROM dbo.SorderPoz (NOLOCK)
398 WHERE SorderPozParentId = @SorderPozParentId
399 AND SorderPozId > @RezervareId
400 AND @CantXml > 0
401 AND Cant > 0
402
403 INSERT #ComenziPartiale
404 ( ParentSorderPozId
405 , SorderPozParentId
406 , SOrderPozId
407 , ContractClientPozId
408 , ProdusId
409 , IntrPozId
410 , GestiuneId
411 , SerieIntrare
412 , LotIntrare
413 , DataFabricare
414 , DataExpirare
415 , ClientCustodieId
416 , CantitateXml
417 , CantitateNelivrata)
418 SELECT sp.ParentSorderPozId
419 , rez.SOrderPozParentId
420 , rez.SOrderPozId
421 , ISNULL(rez.ContractClientPozId,sp.ContractClientPozId)
422 , rez.ProdusId
423 , rez.IntrPozId
424 , rez.GestiuneId
425 , rez.SerieIntrare
426 , rez.LotIntrare
427 , rez.DataFabricare
428 , rez.DataExpirare
429 , rez.ClientCustodieId
430 , @CantRezervare
431 , rez.Cant
432 FROM dbo.SOrderPoz (NOLOCK) rez
433 INNER JOIN dbo.SorderPoz sp (NOLOCK)
434 on sp.SOrderPozId = rez.SOrderPozParentId
435 WHERE rez.SOrderPozId = @RezervareId
436
437 UPDATE #ComenziPartiale
438 SET CantitateXml = CantitateXml - @CantRezervare
439 WHERE SorderPozId = @SorderPozParentId
440
441 SET @CantXml = @CantXml - @CantRezervare
442 END
443 END
444 END
445 END
446
447 --Verificare existenta pozitii cu cantitate peste cea maxima de livrat setare 381
448 --CantXml > CantNelivrata
449 --Daca setare 381 = 1 si pozitia este rezervare, inserez o pozitie noua legata la parinte (si se scade din stoc)
450 --Daaca setare 381 <> 1 afisez eroare
451
452 DECLARE @EroareCantitati NVARCHAR(MAX)
453
454 IF EXISTS(SELECT TOP 1 SorderPozId
455 FROM #ComenziPartiale
456 WHERE IntrPozId IS NOT NULL
457 AND CantitateXml > CantitateNelivrata)
458 BEGIN
459 IF ISNULL(@Setare381,0) = 1
460 BEGIN
461 INSERT #ComenziPartiale
462 ( ParentSorderPozId
463 , SorderPozId
464 , ProdusId
465 , CantitateXml
466 , CantitateNelivrata )
467 SELECT ParentSorderPozId
468 , SorderPozParentId
469 , ProdusId
470 , CantitateXml - CantitateNelivrata
471 , CantitateXml - CantitateNelivrata
472 FROM #ComenziPartiale
473 WHERE IntrPozId IS NOT NULL
474 AND CantitateXml > CantitateNelivrata
475
476 UPDATE #ComenziPartiale
477 SET CantitateXml = CantitateNelivrata
478 WHERE IntrPozId IS NOT NULL
479 AND CantitateXml > CantitateNelivrata
480 END
481 ELSE
482 BEGIN
483 SELECT TOP 1 @EroareCantitati = ISNULL(syserp.erp.textdictionary('Cantitatea introdusa este mai mare decat cantitatea rezervata.',@SYS_LANGID),'Cantitatea introdusa este mai mare decat cantitatea rezervata.')
484 + '<br>' + ISNULL(p.DenumireProdus,'')
485 FROM #ComenziPartiale temp
486 INNER JOIN dbo.tblProduse p (NOLOCK)
487 ON p.ProdusId = temp.ProdusId
488 WHERE IntrPozId IS NOT NULL
489 AND CantitateXml > CantitateNelivrata
490
491 RAISERROR(@EroareCantitati,16,1)
492 END
493 END
494
495 IF EXISTS(SELECT TOP 1 SorderPozId
496 FROM #ComenziPartiale
497 WHERE IntrPozId IS NULL
498 AND CantitateXml > CantitateNelivrata
499 AND ISNULL(@setare381,0) <> 1)
500 BEGIN
501 SELECT TOP 1 @EroareCantitati = ISNULL(syserp.erp.textdictionary('Cantitatea introdusa este mai mare decat cantitatea comandata.',@SYS_LANGID),'Cantitatea introdusa este mai mare decat cantitatea comandata.')
502 + '<br>' + ISNULL(p.DenumireProdus,'')
503 FROM #ComenziPartiale temp
504 INNER JOIN dbo.tblProduse p (NOLOCK)
505 ON p.ProdusId = temp.ProdusId
506 WHERE IntrPozId IS NULL
507 AND CantitateXml > CantitateNelivrata
508
509 RAISERROR(@EroareCantitati,16,1)
510 END
511
512 DECLARE @RegulaProdusIdAplicata INT
513 , @TipRegulaPret INT
514 , @ListaPretId INT
515 , @BlocatRegula BIT
516 , @PretVanzare DECIMAL(18,5)
517 , @PretVanzareRedus DECIMAL(18,5)
518 , @PretLista DECIMAL(22,8)
519 , @PretListaRedus DECIMAL(22,8)
520 , @Adaos DECIMAL(18,2)
521 , @CursValutar DECIMAL(18,5)
522 , @Reducere DECIMAL(18,2)
523 , @ValutaListaId VARCHAR(3)
524 , @ReducereFinala DECIMAL(18,2)
525 , @PretAmanunt DECIMAL(18,5)
526 , @PretAmanuntRedus DECIMAL(18,5)
527 , @ReducereAmanunt DECIMAL(18,5)
528 , @AdaosAmanunt DECIMAL(18,5)
529 , @CantRegula DECIMAL(18,5)
530
531 DECLARE @DiscountPromotie DECIMAL(18,5)
532 , @DiscountPromotieFinal DECIMAL(18,5)
533 , @AdaosPromotie DECIMAL(18,5)
534 , @ReguliIds NVARCHAR(MAX)
535 , @Regula NVARCHAR(200)
536 , @Fixed BIT
537 , @EroarePret NVARCHAR(MAX)
538
539 DECLARE @EroareIesire BIT
540 SET @EroareIesire = 0
541
542 --==============================================================================================
543 -- inserez pozitiile parinte (SorderPoz din #ComenziPartiale unde ContineDetalii = 1)
544 --==============================================================================================
545
546 INSERT INTO inv.IesPoz
547 (ParentIesPozId
548 ,IesCapId
549 ,FirmaId
550 ,DivizieId
551 ,ProdusId
552 ,CantIesire
553 ,PretVanzare
554 ,PretVanzareRedus
555 ,Tva
556 ,CantFacturata
557 ,PretVanzareValuta
558 ,PretVanzareValutaRedus
559 ,CursValutarVanzare
560 ,ValutaVanzareId
561 ,SOrderPozId
562 --,TaxCode
563 --,taxInv
564 ,ProiectId
565 ,TaskId
566 ,AssetId
567 ,Grup
568 ,Ordine
569 ,TermenLivrare
570 ,LuniGarantie
571 ,UmId
572 ,AgentId
573 ,ClientLivrareId
574 ,AdresaLivrare
575 ,Explicatii1
576 ,ContractClientPozId
577 ,PortofoliuProdusId
578 ,CodBareAfisare
579 ,Discount
580 ,DiscountFinal
581 ,CentruCostId
582 ,ArticolBugetId
583 ,BusinessLineId
584 ,Fixed
585 ,RegulaPretId
586 ,regulaPretIds
587 ,Explicatii2
588 ,Cod1
589 ,Cod2
590 ,Cod3
591 ,CodProdusAfisare
592 ,DenumireProdus
593 ,DenumireProdusAfisare
594 ,PretCmp
595 ,GreutateBruta
596 ,GreutateNeta
597 ,ContineDetalii
598 ,PretAmanunt
599 ,PretAmanuntRedus
600 ,PretIntrareValuta
601 ,ValutaIntrareId
602 ,CursIntrare
603 --,ValoareRedusaFaraTva
604 --,ValoareRedusaTva
605 --,ValoareFaraTva
606 --,ValoareTva
607 )
608 SELECT DISTINCT @ParentIesPozId
609 , @IesCapId
610 , @SYS_UNITID
611 , @SYS_DIVID
612 , s.ProdusId
613 , temp.CantitateXml
614 , ROUND(CASE WHEN @DocId = 6 AND s.ValutaId = @ValutaCapId
615 THEN s.PretValuta * @CursCap
616 ELSE s.PretValuta * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
617 THEN ISNULL(dbo.getCursReferintaAjustat(s.ValutaId,@DataCurs,@ValutaDefaultId,@setare389),1)
618 ELSE COALESCE(s.CursValutar,dbo.getCursreferintaAjustat(s.ValutaId,ISNULL(@DataCurs, GETDATE()),@ValutaDefaultId,@setare389),1)
619 END
620 END,CAST(@setare247 AS INT))
621 , ROUND(CASE WHEN @DocId = 6 AND s.ValutaId = @ValutaCapId
622 THEN ISNULL(s.PretvalutaRedus,s.PretValuta) * @CursCap
623 ELSE ISNULL(s.PretvalutaRedus,s.PretValuta) * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
624 THEN ISNULL(dbo.getCursreferintaAjustat(s.ValutaId,@DataCurs,@ValutaDefaultId,@setare389),1)
625 ELSE COALESCE(s.CursValutar,dbo.getCursreferintaAjustat(s.ValutaId,ISNULL(@DataCurs, GETDATE()),@ValutaDefaultId,@setare389),1)
626 END
627 END,CAST(@setare247 AS INT))
628 , t.Tva -- ISNULL(CASE WHEN ISNULL(p.TipItem,'P') = 'P' THEN @TvaP ELSE @TvaS END, t.Tva)
629 , CASE WHEN @DocId = 8 THEN 0 ELSE temp.CantitateXml END
630 , ROUND(CASE WHEN @DocId = 6
631 THEN CASE WHEN s.ValutaId = @ValutaCapId
632 THEN s.PretValuta
633 ELSE ROUND(s.PretValuta * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
634 THEN ISNULL(dbo.getCursReferintaAjustat(s.ValutaId,@DataCurs,@ValutaDefaultId,@setare389),1)
635 ELSE COALESCE(s.CursValutar,dbo.getCursreferintaAjustat(s.ValutaId,ISNULL(@DataCurs, GETDATE()),@ValutaDefaultId,@setare389),1)
636 END,CAST(@setare247 AS INT)) / @CursCap
637 END
638 ELSE s.PretValuta
639 END,CAST(@Setare402 AS INT))
640 , ROUND(CASE WHEN @DocId = 6
641 THEN CASE WHEN s.ValutaId = @ValutaCapId
642 THEN ISNULL(s.PretValutaRedus,s.PretValuta)
643 ELSE ROUND(ISNULL(s.PretValutaRedus,s.PretValuta) * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs,0) = 0
644 THEN ISNULL(dbo.getCursreferintaAjustat(s.ValutaId,@DataCurs,@ValutaDefaultId,@setare389),1)
645 ELSE COALESCE(s.CursValutar,dbo.getCursreferintaAjustat(s.ValutaId,ISNULL(@DataCurs, GETDATE()),@ValutaDefaultId,@setare389),1)
646 END,CAST(@setare247 AS INT)) / @CursCap
647 END
648 ELSE ISNULL(s.PretValutaRedus,s.PretValuta)
649 END,CAST(@Setare402 AS INT))
650 , CASE WHEN @DocId = 6 THEN @CursCap
651 ELSE CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs,0) = 0
652 THEN ISNULL(dbo.getCursreferintaAjustat(s.ValutaId,@DataCurs,@ValutaDefaultId,@setare389),1)
653 ELSE COALESCE(s.CursValutar,dbo.getCursreferintaAjustat(s.ValutaId,ISNULL(@DataCurs, GETDATE()),@ValutaDefaultId,@setare389),1)
654 END
655 END
656 , CASE WHEN @DocId = 6 THEN @ValutaCapId ELSE s.ValutaID END
657 , s.SorderPozId
658 --, CASE WHEN ISNULL(p.TipItem,'P') = 'P' THEN @TaxCodeP ELSE @TaxCodeS END -- as TaxCode
659 --, CASE WHEN ISNULL(p.TipItem,'P') = 'P' THEN @TaxInvP ELSE @TaxInvS END -- as TaxInv
660 , s.ProiectId
661 , s.TaskId
662 , s.AssetId
663 , s.Grup
664 , @Ordine + s.Ordine as Ordine
665 , s.TermenLivrare
666 , s.LuniGarantie
667 , ISNULL(s.UmId,p.UmId)
668 , s.AgentId
669 , s.ClientLivrareId
670 , s.AdresaLivrare
671 , s.Observatii
672 , s.ContractClientPozId
673 , s.PortofoliuProdusId
674 , s.CodBareAfisare
675 , s.Discount
676 , s.Discountfinal
677 , s.CentruCostId
678 , s.ArticolBugetId
679 , s.BusinessLineId
680 , s.Fixed
681 , s.RegulaPretId
682 , s.RegulaPretIds
683 , s.Explicatii2
684 , s.Cod1
685 , s.Cod2
686 , s.Cod3
687 , s.CodProdusAfisare
688 , s.DenumireProdus
689 , s.DenumireProdusAfisare
690 , s.PretCmp
691 , ISNULL(p.Greutate,0) * temp.CantitateXml as GreutateBruta
692 , ISNULL(p.GreutateNeta,0) * temp.CantitateXml as GreutateNeta
693 , 1
694 , ROUND(s.PretAmanunt,@Setare529)
695 , ROUND(ISNULL(s.PretAmanuntRedus,s.PretAmanunt),@setare529)
696 , s.PretIntrareValuta
697 , s.ValutaIntrareId
698 , s.CursIntrare
699 --, ROUND(ROUND(ISNULL(s.PretValutaRedus,s.PretValuta) * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
700 -- THEN dbo.getCursReferintaAjustat(s.ValutaId,@DataCurs,@ValutaDefaultId,@setare389)
701 -- ELSE ISNULL(s.CursValutar,dbo.getCursReferintaAjustat(s.ValutaId,ISNULL(@DataCurs, GETDATE()),@ValutaDefaultId,@setare389))
702 -- END,CAST(@setare247 AS INT))
703 -- * temp.CantitateXml, @setare377)
704 --, ROUND(ROUND(ISNULL(s.PretValutaRedus,s.PretValuta) * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
705 -- THEN dbo.getCursReferintaAjustat(s.ValutaId,@DataCurs,@ValutaDefaultId,@setare389)
706 -- ELSE ISNULL(s.CursValutar,dbo.getCursReferintaAjustat(s.ValutaId,ISNULL(@DataCurs, GETDATE()),@ValutaDefaultId,@setare389))
707 -- END,CAST(@setare247 AS INT))
708 -- * temp.CantitateXml
709 -- * ISNULL(CASE WHEN ISNULL(p.TipItem,'P') = 'P' THEN @TvaP ELSE @TvaS END, t.Tva)
710 -- * (1-ISNULL(CASE WHEN ISNULL(p.TipItem,'P') = 'P' THEN @TaxInvP ELSE @TaxInvS END,0))/100.00, @setare377)
711 --, ROUND(ROUND(s.PretValuta * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
712 -- THEN dbo.getCursReferintaAjustat(s.ValutaId,@DataCurs,@ValutaDefaultId,@setare389)
713 -- ELSE ISNULL(s.CursValutar,dbo.getCursReferintaAjustat(s.ValutaId,ISNULL(@DataCurs, GETDATE()),@ValutaDefaultId,@setare389))
714 -- END,CAST(@setare247 AS INT))
715 -- * temp.CantitateXml, @setare351)
716 --, ROUND(ROUND(s.PretValuta * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
717 -- THEN dbo.getCursReferintaAjustat(s.ValutaId,@DataCurs,@ValutaDefaultId,@setare389)
718 -- ELSE ISNULL(s.CursValutar,dbo.getCursReferintaAjustat(s.ValutaId,ISNULL(@DataCurs, GETDATE()),@ValutaDefaultId,@setare389))
719 -- END,CAST(@setare247 AS INT))
720 -- * temp.CantitateXml
721 -- * ISNULL(CASE WHEN ISNULL(p.TipItem,'P') = 'P' THEN @TvaP ELSE @TvaS END, t.Tva)
722 -- * (1-ISNULL(CASE WHEN ISNULL(p.TipItem,'P') = 'P' THEN @TaxInvP ELSE @TaxInvS END,0))/100.00, @setare351)
723 FROM #ComenziPartiale temp
724 INNER JOIN dbo.SOrderPoz s (NOLOCK)
725 on s.SOrderPozId = temp.SOrderPozId
726 INNER JOIN dbo.tblProduse p (NOLOCK)
727 on p.ProdusId = s.ProdusId
728 INNER JOIN dbo.tblTva t (NOLOCK)
729 on t.TvaId = p.TvaId
730 WHERE ISNULL(temp.ContineDetalii,0) = 1
731 AND ISNUMERIC(temp.CantitateXml) = 1
732 AND ISNULL(temp.CantitateXml,0) > 0
733
734 UPDATE c
735 SET c.CantLivrata = ISNULL(c.CantLivrata,0) + ISNULL(x.Cant,0)
736 FROM dbo.ContracteClientiPoz c
737 INNER JOIN (SELECT temp.ContractClientPozId
738 , SUM(CantitateXml) as Cant
739 FROM #ComenziPartiale temp
740 INNER JOIN dbo.tblProduse pr (NOLOCK)
741 ON pr.ProdusId = temp.ProdusId
742 WHERE ISNULL(temp.ContineDetalii,0) = 1
743 AND ISNUMERIC(temp.CantitateXml) = 1
744 AND ISNULL(temp.CantitateXml,0) > 0
745 AND (ISNULL(@TipFactStoc,0) = 1
746 OR ISNULL(@Setare532,0) = 1
747 OR pr.TipItem = 'S')
748 GROUP BY temp.ContractClientPozId) x
749 on x.ContractClientPozId = c.ContractClientPozId
750
751 IF ISNULL(@TipFactStoc,0) = 1
752 BEGIN
753
754 UPDATE c
755 SET c.CantLivrata = ISNULL(c.CantLivrata,0) + ISNULL(x.Cant,0)
756 FROM dbo.ContracteClientiPoz c
757 INNER JOIN (SELECT temp.ContractClientPozId
758 , SUM(CantitateXml) as Cant
759 FROM #ComenziPartiale temp
760 INNER JOIN dbo.tblProduse p (NOLOCK)
761 ON p.ProdusId = temp.ProdusId
762 WHERE p.TipItem = 'P'
763 AND temp.IntrPozId IS NULL
764 AND ISNULL(temp.ContineDetalii,0) = 0
765 AND ISNUMERIC(temp.CantitateXml) = 1
766 AND ISNULL(temp.CantitateXml,0) > 0
767 GROUP BY temp.ContractClientPozId) x
768 on x.ContractClientPozId = c.ContractClientPozId
769
770 WHILE EXISTS(SELECT TOP 1 temp.SOrderPozId
771 FROM #ComenziPartiale temp
772 INNER JOIN dbo.tblProduse p (NOLOCK)
773 ON p.ProdusId = temp.ProdusId
774 WHERE p.TipItem = 'P'
775 AND temp.IntrPozId IS NULL
776 AND ISNULL(temp.ContineDetalii,0) = 0
777 AND ISNUMERIC(temp.CantitateXml) = 1
778 AND ISNULL(temp.CantitateXml,0) > 0
779 AND ISNULL(@EroareIesire,0) = 0
780 )
781 BEGIN -- Adaugare pzotii din stoc
782
783 SET @cantStoc = 0
784
785 SELECT TOP 1 @ProdusId = temp.ProdusId
786 , @SorderPozId = temp.SOrderPozId
787 , @ParentSorderPozId = temp.ParentSorderPozId
788 , @cantDeInserat = temp.CantitateXml
789 FROM #ComenziPartiale temp
790 INNER JOIN dbo.tblProduse p (NOLOCK)
791 ON p.ProdusId = temp.ProdusId
792 WHERE p.TipItem = 'P'
793 AND temp.IntrPozId IS NULL
794 AND ISNULL(temp.ContineDetalii,0) = 0
795 AND ISNUMERIC(temp.CantitateXml) = 1
796 AND temp.CantitateXml > 0
797 ORDER BY temp.ProdusId
798
799 SELECT TOP 1 @IntrPozId = IntrPozId
800 , @GestiuneId = s.GestiuneID
801 , @SerieIntrare = s.SerieIntrare
802 , @LotIntrare = s.LotIntrare
803 , @DataFabricare = s.DataFabricare
804 , @DataExpirare = s.DataExpirare
805 , @ClientCustodieId = s.ClientCustodieId
806 , @CantStoc = Stoc
807 FROM inv.Stoc s (NOLOCK)
808 INNER JOIN dbo.tblGestiuni g (NOLOCK)
809 ON s.GestiuneId = g.GestiuneId
810 WHERE s.ProdusId = @ProdusId
811 AND s.GestiuneId IN (SELECT GestiuneId FROM dbo.DrepturiGestiuni(@SYS_USERID))
812 AND (ISNULL(@GestiuneIds,'') = ''
813 OR s.GestiuneId IN (SELECT Numbers FROM tf_IDs_from_a_string(@GestiuneIds))
814 )
815 AND s.FirmaId = @SYS_UNITID
816 AND s.DivizieId = @SYS_DIVID
817 AND (s.ClientCustodieId IS NULL OR s.ClientCustodieId = @ClientId)
818 AND ISNULL(g.OrdineVanzare,0) <> 0
819 AND s.Stoc > 0
820 ORDER BY CASE WHEN s.ClientCustodieId = @ClientId THEN 0 ELSE 1 END
821 , g.OrdineVanzare
822 , CASE WHEN @Setare420 = 'FIFO' THEN s.DataIntr WHEN @Setare420 = 'FEFO' THEN s.DataExpirare ELSE s.DataIntr END
823 , s.DataIntr
824
825 IF ISNULL(@CantStoc,0) = 0
826 BEGIN
827 DECLARE @EroareStoc NVARCHAR(MAX)
828 SELECT @EroareStoc = ISNULL(syserp.erp.textdictionary('Cantitate insuficienta in stoc',@SYS_LANGID),'Cantitate insuficienta in stoc')
829 + '<br>' + ISNULL(DenumireProdus,'')
830 FROM dbo.tblProduse (NOLOCK)
831 WHERE ProdusId = @ProdusId
832
833 SET @EroareIesire = 1
834 RAISERROR(@EroareStoc,16,1)
835 END
836 ELSE
837 BEGIN
838 IF ISNULL(@ReaplicareReguli,0) = 1
839 BEGIN
840 SELECT @RegulaProdusIdAplicata = null
841 , @TipRegulaPret = null
842 , @ListaPretId = null
843 , @BlocatRegula = null
844 , @PretVanzare = null
845 , @PretVanzareRedus = null
846 , @PretLista = null
847 , @PretListaRedus = null
848 , @Adaos = null
849 , @CursValutar = null
850 , @Reducere = null
851 , @ValutaListaId = null
852 , @ReducereFinala = null
853 , @PretAmanunt = null
854 , @PretAmanuntRedus = null
855 , @ReducereAmanunt = null
856 , @AdaosAmanunt = null
857 , @CantRegula = null
858 , @PretRecomandat = null
859
860 SET @CantRegula = CASE WHEN @CantDeInserat > @CantStoc THEN @CantStoc ELSE @CantDeInserat END
861
862 EXEC [dbo].[GetPretDupaRegulaLista]
863 @SYS_PARTID = @SYS_PARTID
864 , @FirmaId = @SYS_UNITID
865 , @DivizieId = @SYS_DIVID
866 , @ClientId = @ClientId
867 , @DocId = @DocId
868 , @TermenPlataId = @TermenPlataId
869 , @ProdusId = @ProdusId
870 , @Cantitate = @CantRegula
871 , @IntrPozId = @IntrPozId
872 , @SerieIntrare = @SerieIntrare
873 , @LotIntrare = @LotIntrare
874 , @DataFabricare = @DataFabricare
875 , @DataExpirare = @DataExpirare
876 , @GestiuneId = @GestiuneId
877 , @DataDocument = @Datafactura
878 , @ValutaCapId = @ValutaCapId
879 , @CursCap = @CursCap
880 , @Global = 0
881 , @TipDocId = @TipDocId
882 , @SorderCapId = @SorderCapId
883 , @ModPlataId = @ModPlataId
884 , @RegulaProdusIdAplicata = @RegulaProdusIdAplicata OUTPUT
885 , @TipRegula = @TipRegulaPret OUTPUT
886 , @ListaPretId = @ListaPretId OUTPUT
887 , @Blocat = @BlocatRegula OUTPUT
888 , @PretVanzare = @PretVanzare OUTPUT
889 , @PretVanzareRedus = @PretVanzareRedus OUTPUT
890 , @PretLista = @PretLista OUTPUT
891 , @Adaos = @Adaos OUTPUT
892 , @CursValutar = @CursValutar OUTPUT
893 , @Reducere = @Reducere OUTPUT
894 , @ValutaId = @ValutaListaId OUTPUT
895 , @ReducereFinala = @ReducereFinala OUTPUT
896 , @PretAmanunt = @PretAmanunt OUTPUT
897 , @PretAmanuntRedus = @PretAmanuntRedus OUTPUT
898 , @ReducereAmanunt = @ReducereAmanunt OUTPUT
899 , @AdaosAmanunt = @AdaosAmanunt OUTPUT
900 , @PretRecomandat = @PretRecomandat OUTPUT
901
902 SELECT @DiscountPromotie = null
903 , @DiscountPromotieFinal = null
904 , @AdaosPromotie = null
905 , @ReguliIds = null
906 , @Regula = null
907 , @Fixed = null
908 , @EroarePret = null
909
910 SELECT @Regula = NumeRegula
911 , @Fixed = Fixed
912 , @ReguliIds = RegulaPretId
913 FROM dbo.ReguliPreturi (nolock)
914 WHERE RegulaPretId = @RegulaProdusIdAplicata
915
916 IF ISNULL(@Fixed,0) = 0
917 BEGIN
918 EXEC [dbo].[GetPromotieRegula]
919 @SYS_PARTID = @SYS_PARTID
920 , @FirmaId = @SYS_UNITID
921 , @DivizieId = @SYS_DIVID
922 , @ProdusId = @ProdusId
923 , @ClientId = @ClientId
924 , @DocId = @DocId
925 , @TermenPlataId = @TermenPlataId
926 , @Cantitate = @cantDeInserat
927 , @RegulaPrincipalaId = @RegulaProdusIdAplicata
928 , @ModPlataId = @ModPlataId
929 , @TipDocId = @TipDocId
930 , @DiscountPromotie = @DiscountPromotie OUTPUT
931 , @DiscountPromotieFinal = @DiscountPromotieFinal OUTPUT
932 , @AdaosPromotie = @AdaosPromotie OUTPUT
933 , @ReguliIds = @ReguliIds OUTPUT
934
935 SELECT @Reducere = ISNULL(@Reducere,0) + ISNULL(@DiscountPromotie,0)
936 , @ReducereFinala = ISNULL(@ReducereFinala,0) + ISNULL(@DiscountPromotieFinal,0)
937 , @Adaos = ISNULL(@Adaos,0) + ISNULL(@AdaosPromotie,0)
938
939 SET @PretVanzareRedus = @PretVanzare * (1 - ISNULL(@Reducere,0)/100.00) * (1 - ISNULL(@ReducereFinala,0)/100.00)
940 SET @PretListaRedus = @PretLista * (1 - ISNULL(@Reducere,0)/100.00) * (1 - ISNULL(@ReducereFinala,0)/100.00)
941 END
942
943 SELECT @PretVanzare = ROUND(@PretVanzare,CAST(@setare247 AS INT))
944 , @PretVanzareRedus = ROUND(ISNULL(@PretVanzareRedus,@PretVanzare),CAST(@setare247 AS INT))
945 , @PretLista = ROUND(@PretLista,CAST(@setare402 AS INT))
946 , @PretListaRedus = ROUND(ISNULL(@PretListaRedus,@PretLista),CAST(@setare402 AS INT))
947 , @Reducere = ISNULL(@Reducere,0)
948 , @Adaos = ISNULL(@Adaos,0)
949 , @ValutaListaId = ISNULL(@ValutaListaId,@ValutaDefaultId)
950 , @CursValutar = ISNULL(@CursValutar,1)
951 , @PretRecomandat = ROUND(@PretRecomandat,CAST(@setare247 AS INT))
952
953 IF @PretVanzareRedus IS NULL
954 BEGIN
955 IF @RegulaProdusIdAplicata IS NULL
956 BEGIN
957 SELECT @EroarePret = ISNULL(SysErp.ERP.textdictionary('Nu exista pret asociat produsului',@SYS_LANGID),'Nu exista pret asociat produsului')
958 + '<br>' + ISNULL(DenumireProdus,'')
959 FROM dbo.tblProduse (NOLOCK)
960 WHERE ProdusId = @ProdusId
961
962 RAISERROR (@EroarePret,16,1)
963 END
964 ELSE
965 BEGIN
966 SELECT @PretVanzare = 0
967 , @PretVanzareRedus = 0
968 , @PretLista = 0
969 , @PretListaRedus = 0
970 , @PretRecomandat = 0
971 END
972 END
973 END
974
975 INSERT INTO inv.IesPoz
976 (
977 IesCapId
978 , ParentIesPozId
979 , FirmaId
980 , DivizieId
981 , ProdusId
982 , CantIesire
983 , PretVanzare
984 , PretVanzareRedus
985 , Tva
986 , CantFacturata
987 , FurnizorId
988 , FurnizorOriginalId
989 , NumarIntr
990 , DataIntr
991 , DocIntrId
992 , TipDocIntrId
993 , DataScadentaIntr
994 , NumarFactIntr
995 , DataFactIntr
996 , PretIntrare
997 , PretIntrareRedus
998 , PretCost
999 , GestiuneId
1000 , LotIntrare
1001 , DataExpirare
1002 , TvaIntrare
1003 , IntrPozId
1004 , IntrPozOrigId
1005 , DataFabricare
1006 , SerieIntrare
1007 , POrderPozId
1008 , ContractFurnizorPozId
1009 , ValutaCmdFurnId
1010 , ValutaCtrFurnId
1011 , PretCmdFurn
1012 , PretCtrFurn
1013 --, TaxCode
1014 --, TaxInv
1015 , ExplicatiiIntr1
1016 , ExplicatiiIntr2
1017 , PretIntrareValuta
1018 , ValutaIntrareId
1019 , CursIntrare
1020 , PretVanzareValuta
1021 , PretVanzareValutaRedus
1022 , CursValutarVanzare
1023 , ValutaVanzareId
1024 , SorderPozId
1025 , ProiectId
1026 , TaskId
1027 , AssetId
1028 , Grup
1029 , Ordine
1030 , TermenLivrare
1031 , LuniGarantie
1032 , UmId
1033 , AgentId
1034 , ClientLivrareId
1035 , AdresaLivrare
1036 , Explicatii1
1037 , Explicatii2
1038 , DenumireProdusAfisare
1039 , DenumireProdus
1040 , ContractClientPozId
1041 , PortofoliuProdusID
1042 , CodProdusAfisare
1043 , CodBareAfisare
1044 , ClientCustodieId
1045 , Discount
1046 , DiscountFinal
1047 , CentruCostId
1048 , ArticolBugetId
1049 , BusinessLineId
1050 , Fixed
1051 , RegulaPretId
1052 , regulaPretIds
1053 , Cod1
1054 , Cod2
1055 , Cod3
1056 , PretCmp
1057 , PretAmanunt
1058 , PretAmanuntRedus
1059 --, ValoareRedusaFaraTva
1060 --, ValoareRedusaTva
1061 --, ValoareFaraTva
1062 --, ValoareTva
1063 , PretRecomandat
1064 )
1065 SELECT @IesCapId
1066 , ISNULL(ipp.IesPozId,@ParentIesPozId)
1067 , @SYS_UNITID
1068 , @SYS_DIVID
1069 , @ProdusId
1070 , CASE WHEN @cantDeInserat > @cantStoc THEN @cantStoc ELSE @cantDeInserat END
1071 , ROUND(CASE WHEN ISNULL(@ReaplicareReguli,0) = 1 THEN @PretVanzare
1072 ELSE CASE WHEN @DocId = 6 AND p.ValutaID = @ValutaCapId
1073 THEN p.PretValuta * @CursCap
1074 ELSE p.PretValuta * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
1075 THEN ISNULL(dbo.getCursReferintaAjustat(p.ValutaId,@DataCurs,@ValutaDefaultId,@setare389),1)
1076 ELSE COALESCE(p.CursValutar,dbo.getCursreferintaAjustat(p.ValutaId,ISNULL(@DataCurs, GETDATE()),@ValutaDefaultId,@setare389),1)
1077 END
1078 END
1079 END,CAST(@setare247 AS INT))
1080 , ROUND(CASE WHEN ISNULL(@ReaplicareReguli,0) = 1 THEN ISNULL(@PretVanzareRedus,@PretVanzare)
1081 ELSE CASE WHEN @DocId = 6 AND p.ValutaID = @ValutaCapId
1082 THEN ISNULL(p.PretValutaRedus,p.PretValuta) * @CursCap
1083 ELSE ISNULL(p.PretValutaRedus,p.PretValuta) * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
1084 THEN ISNULL(dbo.getCursreferintaAjustat(p.ValutaId,@DataCurs,@ValutaDefaultId,@setare389),1)
1085 ELSE COALESCE(p.CursValutar,dbo.getCursreferintaAjustat(p.ValutaId,ISNULL(@DataCurs, GETDATE()),@ValutaDefaultId,@setare389),1)
1086 END
1087 END
1088 END,CAST(@setare247 AS INT))
1089 , t.Tva --ISNULL(@TvaP,t.Tva)
1090 , CASE WHEN @DocId = 8 THEN 0 ELSE CASE WHEN @cantDeInserat > @cantStoc THEN @cantStoc ELSE @cantDeInserat END END
1091 , s.FurnizorId
1092 , s.FurnizorOriginalId
1093 , s.NumarIntr
1094 , s.DataIntr
1095 , s.DocIntrId
1096 , s.TipDocIntrId
1097 , s.DataScadenta
1098 , s.NumarFactIntr
1099 , s.DataFactIntr
1100 , s.PretIntrare
1101 , s.PretIntrareRedus
1102 , s.PretCost
1103 , s.GestiuneId
1104 , s.LotIntrare
1105 , s.DataExpirare
1106 , s.Tva
1107 , s.IntrPozId
1108 , s.IntrPozOrigId
1109 , s.DataFabricare
1110 , s.SerieIntrare
1111 , s.POrderPozId
1112 , s.ContractFurnizorPozId
1113 , s.ValutaCmdFurnId
1114 , s.ValutaCtrFurnId
1115 , s.PretCmdFurn
1116 , s.PretCtrFurn
1117 --, @TaxCodeP
1118 --, @TaxInvP
1119 , s.ExplicatiiIntr1
1120 , s.ExplicatiiIntr2
1121 , s.PretIntrareValuta
1122 , s.ValutaIntrareId
1123 , s.CursIntrare
1124 , ROUND(CASE WHEN ISNULL(@ReaplicareReguli,0) = 1 THEN @PretLista
1125 ELSE CASE WHEN @DocId = 6
1126 THEN CASE WHEN p.ValutaId = @ValutaCapId
1127 THEN p.PretValuta
1128 ELSE ROUND(p.PretValuta * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @SOrderDate AND ISNULL(@PastrareCurs,0) = 0
1129 THEN ISNULL(dbo.getCursreferintaAjustat(p.ValutaId,@DataCurs,@ValutaDefaultId,@setare389),1)
1130 ELSE COALESCE(p.CursValutar,dbo.getCursreferintaAjustat(p.ValutaId,ISNULL(@DataCurs,GETDATE()),@ValutaDefaultId,@setare389),1)
1131 END,CAST(@setare247 AS INT)) / @CursCap
1132 END
1133 ELSE p.PretValuta
1134 END
1135 END,@setare402)
1136 , ROUND(CASE WHEN ISNULL(@ReaplicareReguli,0) = 1 THEN ISNULL(@PretListaRedus,@PretLista)
1137 ELSE CASE WHEN @DocId = 6
1138 THEN CASE WHEN p.ValutaId = @ValutaCapId
1139 THEN ISNULL(p.PretValutaRedus,p.PretValuta)
1140 ELSE ROUND(ISNULL(p.PretValutaRedus,p.PretValuta) * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @SOrderDate AND ISNULL(@PastrareCurs,0) = 0
1141 THEN ISNULL(dbo.getCursreferintaAjustat(p.ValutaId,@DataCurs,@ValutaDefaultId,@setare389),1)
1142 ELSE COALESCE(p.CursValutar,dbo.getCursreferintaAjustat(p.ValutaId,ISNULL(@DataCurs,GETDATE()),@ValutaDefaultId,@setare389),1)
1143 END,CAST(@setare247 AS INT)) / @CursCap
1144 END
1145 ELSE ISNULL(p.PretValutaRedus,p.PretValuta)
1146 END
1147 END,@setare402)
1148 , CASE WHEN @DocId = 6 THEN @CursCap
1149 ELSE CASE WHEN ISNULL(@ReaplicareReguli,0) = 1 THEN @CursValutar
1150 ELSE CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @SOrderDate AND ISNULL(@PastrareCurs,0) = 0
1151 THEN ISNULL(dbo.getCursreferintaAjustat(p.ValutaId,@DataCurs,@ValutaDefaultId,@setare389),1)
1152 ELSE COALESCE(p.CursValutar,dbo.getCursreferintaAjustat(p.ValutaId,ISNULL(@DataCurs,GETDATE()),@ValutaDefaultId,@setare389),1)
1153 END
1154 END
1155 END
1156 , CASE WHEN @DocId = 6 THEN @ValutaCapId
1157 ELSE CASE WHEN ISNULL(@ReaplicareReguli,0) = 1
1158 THEN @ValutaListaId
1159 ELSE p.ValutaId
1160 END
1161 END
1162 , @SorderPozId
1163 , p.ProiectId
1164 , p.TaskId
1165 , ISNULL(s.AssetId,p.AssetId)
1166 , p.Grup
1167 , p.Ordine
1168 , p.TermenLivrare
1169 , p.LuniGarantie
1170 , ISNULL(p.UmId,prod.UmId)
1171 , p.AgentId
1172 , p.ClientLivrareId
1173 , p.AdresaLivrare
1174 , p.Observatii
1175 , p.Explicatii2
1176 , p.DenumireProdusAfisare
1177 , p.DenumireProdus
1178 , p.ContractClientPozId
1179 , p.PortofoliuProdusId
1180 , p.CodProdusAfisare
1181 , p.CodBareAfisare
1182 , s.ClientCustodieId
1183 , CASE WHEN ISNULL(@ReaplicareReguli,0) = 1 THEN @Reducere ELSE p.Discount END
1184 , CASE WHEN ISNULL(@ReaplicareReguli,0) = 1 THEN @ReducereFinala ELSE p.DiscountFinal END
1185 , p.CentruCostId
1186 , p.ArticolBugetId
1187 , p.BusinessLineID
1188 , CASE WHEN ISNULL(@ReaplicareReguli,0) = 1 THEN @Fixed ELSE p.Fixed END
1189 , CASE WHEN ISNULL(@ReaplicareReguli,0) = 1 THEN @RegulaProdusIdAplicata ELSE p.RegulaPretId END
1190 , CASE WHEN ISNULL(@ReaplicareReguli,0) = 1 THEN @ReguliIds ELSE p.RegulaPretIds END
1191 , isnull(p.Cod1,s.cod1)
1192 , isnull(p.Cod2,s.cod2)
1193 , isnull(p.Cod3,s.cod3)
1194 , isnull(p.PretCmp,s.PretCmp)
1195 , ROUND(CASE WHEN ISNULL(@ReaplicareReguli,0) = 1 THEN @PretAmanunt ELSE p.PretAmanunt END,@Setare529)
1196 , ROUND(CASE WHEN ISNULL(@ReaplicareReguli,0) = 1 THEN ISNULL(@PretAmanuntRedus,@PretAmanunt) ELSE ISNULL(p.PretAmanuntRedus,p.PretAmanunt) END, @Setare529)
1197 --, ROUND(ROUND(CASE WHEN ISNULL(@ReaplicareReguli,0) = 1 THEN ISNULL(@PretVanzareRedus,@PretVanzare)
1198 -- ELSE ISNULL(p.PretValutaRedus, p.PretValuta) * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
1199 -- THEN dbo.getCursReferintaAjustat(p.ValutaId,@dataCurs,@valutaDefaultId,@setare389)
1200 -- ELSE ISNULL(p.cursvalutar,dbo.getCursReferintaAjustat(p.ValutaId,ISNULL(@DataCurs,GETDATE()),@ValutaDefaultId,@setare389))
1201 -- END
1202 -- END,CAST(@setare247 AS INT)) * CASE WHEN @CantDeInserat > @CantStoc THEN @CantStoc ELSE @CantDeInserat END,@setare377)
1203 --, ROUND(ROUND(CASE WHEN ISNULL(@ReaplicareReguli,0) = 1 THEN ISNULL(@PretVanzareRedus,@PretVanzare)
1204 -- ELSE ISNULL(p.PretValutaRedus, p.PretValuta) * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
1205 -- THEN dbo.getCursReferintaAjustat(p.ValutaId,@dataCurs,@valutaDefaultId,@setare389)
1206 -- ELSE ISNULL(p.cursvalutar,dbo.getCursReferintaAjustat(p.ValutaId,ISNULL(@DataCurs,GETDATE()),@ValutaDefaultId,@setare389))
1207 -- END
1208 -- END,CAST(@setare247 AS INT)) * CASE WHEN @CantDeInserat > @CantStoc THEN @CantStoc ELSE @CantDeInserat END
1209 -- * ISNULL(@TvaP,t.Tva)
1210 -- * (1-ISNULL(@TaxInvP,0)) / 100.00,@setare377)
1211 --, ROUND(ROUND(CASE WHEN ISNULL(@ReaplicareReguli,0) = 1 THEN @PretVanzare
1212 -- ELSE p.PretValuta * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
1213 -- THEN dbo.getCursReferintaAjustat(p.ValutaId,@DataCurs,@ValutaDefaultId,@setare389)
1214 -- ELSE ISNULL(p.CursValutar,dbo.getCursReferintaAjustat(p.ValutaId,ISNULL(@DataCurs,GETDATE()),@ValutaDefaultId,@setare389))
1215 -- END
1216 -- END,CAST(@setare247 AS INT)) * CASE WHEN @CantDeInserat > @CantStoc THEN @CantStoc ELSE @CantDeInserat END,CAST(@setare351 AS INT))
1217 --, ROUND(ROUND(CASE WHEN ISNULL(@ReaplicareReguli,0) = 1 THEN @PretVanzare
1218 -- ELSE p.PretValuta * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
1219 -- THEN dbo.getCursReferintaAjustat(p.ValutaId,@DataCurs,@ValutaDefaultId,@setare389)
1220 -- ELSE ISNULL(p.CursValutar,dbo.getCursReferintaAjustat(p.ValutaId,ISNULL(@DataCurs,GETDATE()),@ValutaDefaultId,@setare389))
1221 -- END
1222 -- END,CAST(@setare247 AS INT)) * CASE WHEN @CantDeInserat > @CantStoc THEN @CantStoc ELSE @CantDeInserat END
1223 -- * ISNULL(@TvaP,t.Tva) * (1-ISNULL(@TaxInvP,0)) / 100.00,CAST(@setare351 AS INT))
1224 , @PretRecomandat
1225 FROM #ComenziPartiale temp
1226 INNER JOIN dbo.SorderPoz p (NOLOCK)
1227 ON p.SorderPozId = temp.SorderPozId
1228 INNER JOIN dbo.tblProduse prod (NOLOCK)
1229 ON prod.ProdusID = p.ProdusId
1230 INNER JOIN dbo.tblTva t (NOLOCK)
1231 ON t.TvaId = prod.TvaId
1232 INNER JOIN inv.Stoc s (NOLOCK)
1233 ON s.ProdusId = p.ProdusId
1234 LEFT JOIN inv.IesPoz ipp (NOLOCK)
1235 ON ipp.IesPozId = (SELECT MAX(IesPozId) FROM inv.IesPoz (NOLOCK) WHERE IesCapId = @IesCapId AND SorderPozId = temp.ParentSorderPozId)
1236 --ipp.SorderPozId = @ParentSorderPozId
1237 --AND ipp.IesCapId = @IesCapId
1238 WHERE p.SorderPozId = @SorderPozId
1239 AND s.ProdusId = @ProdusId
1240 AND s.IntrPozId = @IntrPozId
1241 AND s.GestiuneId = @GestiuneId
1242 AND s.FirmaId = @SYS_UNITID
1243 AND s.DivizieId = @SYS_DIVID
1244 AND ISNULL(s.SerieIntrare,'') = ISNULL(@SerieIntrare,'')
1245 AND ISNULL(s.LotIntrare,'') = ISNULL(@LotIntrare,'')
1246 AND ISNULL(s.DataFabricare,'') = ISNULL(@DataFabricare,'')
1247 AND ISNULL(s.DataExpirare,'') = ISNULL(@DataExpirare,'')
1248 AND ISNULL(s.ClientCustodieId,0) = ISNULL(@ClientCustodieId,0)
1249 AND s.Stoc > 0
1250
1251 UPDATE inv.Stoc
1252 SET Stoc = Stoc - CASE WHEN @CantDeInserat > @CantStoc THEN @CantStoc ELSE @CantDeInserat END
1253 , CantNevalidata = ISNULL(CantNevalidata,0) + CASE WHEN @CantDeInserat > @CantStoc THEN @CantStoc ELSE @CantDeInserat END
1254 WHERE ProdusId = @ProdusId
1255 AND IntrPozId = @IntrPozId
1256 AND GestiuneId = @GestiuneId
1257 AND FirmaId = @SYS_UNITID
1258 AND DivizieId = @SYS_DIVID
1259 AND ISNULL(SerieIntrare,'') = ISNULL(@SerieIntrare,'')
1260 AND ISNULL(LotIntrare,'') = ISNULL(@LotIntrare,'')
1261 AND ISNULL(DataFabricare,'') = ISNULL(@DataFabricare,'')
1262 AND ISNULL(DataExpirare,'') = ISNULL(@DataExpirare,'')
1263 AND ISNULL(ClientCustodieId,0) = ISNULL(@ClientcustodieId,0)
1264 AND Stoc > 0
1265
1266 EXEC [dbo].[Stoc_ActualizareCantitatiCheie]
1267 @IntrPozId = @IntrPozId
1268 , @GestiuneId = @GestiuneId
1269 , @SerieIntrare = @SerieIntrare
1270 , @LotIntrare = @LotIntrare
1271 , @DataFabricare = @DataFabricare
1272 , @DataExpirare = @DataExpirare
1273 , @ClientCustodieId = @ClientCustodieId
1274 , @SYS_UNITID = @SYS_UNITID
1275 , @SYS_DIVID = @SYS_DIVID
1276
1277 UPDATE #ComenziPartiale
1278 SET CantitateXml = CantitateXml - CASE WHEN @cantDeInserat > @cantStoc THEN @cantStoc ELSE @cantDeInserat END
1279 WHERE SorderPOzId = @SorderPozId
1280 END
1281 END
1282
1283 BEGIN -- Adaugare rezervari
1284
1285 UPDATE c
1286 SET c.CantLivrata = ISNULL(c.CantLivrata,0) + ISNULL(x.Cant,0)
1287 FROM dbo.ContracteClientiPoz c
1288 INNER JOIN (SELECT temp.ContractClientPozId
1289 , SUM(CantitateXml) as Cant
1290 FROM #ComenziPartiale temp
1291 INNER JOIN dbo.tblProduse p (NOLOCK)
1292 ON p.ProdusId = temp.ProdusId
1293 WHERE p.TipItem = 'P'
1294 AND temp.IntrPozId IS NOT NULL
1295 AND ISNUMERIC(temp.CantitateXml) = 1
1296 AND ISNULL(temp.CantitateXml,0) > 0
1297 GROUP BY temp.ContractClientPozId) x
1298 on x.ContractClientPozId = c.ContractClientPozId
1299
1300 IF ISNULL(@ReaplicareReguli,0) = 0
1301 BEGIN
1302 UPDATE st
1303 SET st.CantRezervata = ISNULL(st.CantRezervata, 0) - ISNULL(s.Cant, 0)
1304 , st.CantNevalidata = ISNULL(st.CantNevalidata, 0) + ISNULL(s.Cant, 0)
1305 FROM inv.Stoc st
1306 INNER JOIN (SELECT temp.IntrPozId
1307 , temp.GestiuneId
1308 , temp.SerieIntrare
1309 , temp.LotIntrare
1310 , temp.DataFabricare
1311 , temp.DataExpirare
1312 , temp.ClientCustodieId
1313 , SUM(temp.CantitateXml) AS Cant
1314 FROM #ComenziPartiale temp
1315 INNER JOIN dbo.tblProduse prod (NOLOCK)
1316 ON prod.ProdusId = temp.ProdusId
1317 WHERE prod.TipItem = 'P'
1318 AND temp.IntrPozId IS NOT NULL
1319 AND ISNUMERIC(temp.CantitateXml) = 1
1320 AND ISNULL(temp.CantitateXml,0) > 0
1321 GROUP BY temp.IntrPozId
1322 ,temp.GestiuneId
1323 ,temp.SerieIntrare
1324 ,temp.LotIntrare
1325 ,temp.DataFabricare
1326 ,temp.DataExpirare
1327 ,temp.ClientCustodieId ) s
1328 ON st.IntrPozId = s.IntrPozId
1329 AND st.GestiuneId = s.GestiuneId
1330 AND ISNULL(st.SerieIntrare, '') = ISNULL(s.SerieIntrare, '')
1331 AND ISNULL(st.LotIntrare, '') = ISNULL(s.LotIntrare, '')
1332 AND ISNULL(st.DataFabricare, '1990-01-01') = ISNULL(s.DataFabricare, '1990-01-01')
1333 AND ISNULL(st.DataExpirare, '1990-01-01') = ISNULL(s.DataExpirare, '1990-01-01')
1334 AND ISNULL(st.ClientCustodieId, 0) = ISNULL(s.ClientCustodieId, 0)
1335
1336 INSERT INTO inv.IesPoz
1337 (IesCapId
1338 ,ParentIesPozId
1339 ,FirmaId
1340 ,DivizieId
1341 ,ProdusId
1342 ,CantIesire
1343 ,PretVanzare
1344 ,PretVanzareRedus
1345 ,Tva
1346 ,CantFacturata
1347 ,FurnizorId
1348 ,FurnizorOriginalId
1349 ,NumarIntr
1350 ,DataIntr
1351 ,DocIntrId
1352 ,TipDocIntrId
1353 ,DataScadentaIntr
1354 ,NumarFactIntr
1355 ,DataFactIntr
1356 ,PretIntrare
1357 ,PretIntrareRedus
1358 ,PretCost
1359 ,GestiuneId
1360 ,LotIntrare
1361 ,DataExpirare
1362 ,TvaIntrare
1363 ,IntrPozId
1364 ,IntrPozOrigId
1365 ,DataFabricare
1366 ,SerieIntrare
1367 ,POrderPozId
1368 ,ContractFurnizorPozId
1369 ,ValutaCmdFurnId
1370 ,ValutaCtrFurnId
1371 ,PretCmdFurn
1372 ,PretCtrFurn
1373 --,TaxCode
1374 --,TaxInv
1375 ,ExplicatiiIntr1
1376 ,ExplicatiiIntr2
1377 ,PretIntrareValuta
1378 ,ValutaIntrareId
1379 ,CursIntrare
1380 ,PretVanzareValuta
1381 ,PretVanzareValutaRedus
1382 ,CursValutarVanzare
1383 ,ValutaVanzareId
1384 ,SorderPozId
1385 ,ProiectId
1386 ,TaskId
1387 ,AssetId
1388 ,Grup
1389 ,Ordine
1390 ,TermenLivrare
1391 ,LuniGarantie
1392 ,UmId
1393 ,AgentId
1394 ,ClientLivrareId
1395 ,AdresaLivrare
1396 ,Explicatii1
1397 ,Explicatii2
1398 ,DenumireProdusAfisare
1399 ,DenumireProdus
1400 ,ContractClientPozId
1401 ,PortofoliuProdusId
1402 ,CodProdusAfisare
1403 ,CodBareAfisare
1404 ,ClientCustodieId
1405 ,Discount
1406 ,DiscountFinal
1407 ,CentruCostId
1408 ,ArticolBugetId
1409 ,BusinessLineId
1410 ,Fixed
1411 ,RegulaPretId
1412 ,RegulaPretIds
1413 ,Cod1
1414 ,Cod2
1415 ,Cod3
1416 ,PretCmp
1417 ,PretAmanunt
1418 ,PretAmanuntRedus
1419 --,ValoareRedusaFaraTva
1420 --,ValoareRedusaTva
1421 --,ValoareFaraTva
1422 --,ValoareTva
1423 )
1424 SELECT @IesCapId
1425 , ISNULL(ipp.IesPozId,@ParentIesPozId)
1426 , @SYS_UNITID
1427 , @SYS_DIVID
1428 , s.ProdusId
1429 , temp.CantitateXml
1430 , ROUND(CASE WHEN @DocId = 6 AND s.ValutaID = @ValutaCapId
1431 THEN s.PretValuta * @CursCap
1432 ELSE s.PretValuta * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
1433 THEN ISNULL(dbo.getCursReferintaAjustat(s.ValutaId,@DataCurs,@ValutaDefaultId,@setare389),1)
1434 ELSE COALESCE(s.CursValutar,dbo.getCursreferintaAjustat(s.ValutaId,ISNULL(@DataCurs, GETDATE()),@ValutaDefaultId,@setare389),1)
1435 END
1436 END,CAST(@setare247 AS INT))
1437 , ROUND(CASE WHEN @DocId = 6 AND s.ValutaId = @ValutaCapId
1438 THEN ISNULL(s.PretvalutaRedus,s.PretValuta) * @CursCap
1439 ELSE ISNULL(s.PretvalutaRedus,s.PretValuta) * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
1440 THEN ISNULL(dbo.getCursreferintaAjustat(s.ValutaId,@DataCurs,@ValutaDefaultId,@setare389),1)
1441 ELSE COALESCE(s.CursValutar,dbo.getCursreferintaAjustat(s.ValutaId,ISNULL(@DataCurs, GETDATE()),@ValutaDefaultId,@setare389),1)
1442 END
1443 END,CAST(@setare247 AS INT))
1444 , t.Tva --ISNULL(@TvaP,t.Tva)
1445 , CASE WHEN @DocId = 8 THEN 0 ELSE temp.CantitateXml END
1446 , s.FurnizorId
1447 , s.FurnizorOriginalId
1448 , s.NumarIntr
1449 , s.DataIntr
1450 , s.DocIntrId
1451 , s.TipDocIntrId
1452 , s.DataScadentaIntr
1453 , s.NumarFactIntr
1454 , s.DataFactIntr
1455 , s.PretIntrare
1456 , s.PretIntrareRedus
1457 , s.PretCost
1458 , s.GestiuneId
1459 , s.LotIntrare
1460 , s.DataExpirare
1461 , s.TvaIntrare
1462 , s.IntrPozId
1463 , s.IntrPozOrigId
1464 , s.DataFabricare
1465 , s.SerieIntrare
1466 , s.POrderPozId
1467 , s.ContractFurnizorPozId
1468 , s.ValutaCmdFurnId
1469 , s.ValutaCtrFurnId
1470 , s.PretCmdFurn
1471 , s.PretCtrFurn
1472 --, @TaxCodeP
1473 --, @TaxInvP
1474 , s.ExplicatiiIntr1
1475 , s.ExplicatiiIntr2
1476 , s.PretIntrareValuta
1477 , s.ValutaIntrareId
1478 , s.CursIntrare
1479 , ROUND(CASE WHEN @DocId = 6
1480 THEN CASE WHEN s.ValutaID = @ValutaCapId
1481 THEN s.PretValuta
1482 ELSE ROUND(s.PretValuta * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @SOrderDate AND ISNULL(@PastrareCurs,0) =0
1483 THEN ISNULL(dbo.getCursReferintaAjustat(s.ValutaId,@DataCurs,@ValutaDefaultId,@setare389),1)
1484 ELSE COALESCE(s.CursValutar,dbo.getCursReferintaAjustat(s.ValutaId,ISNULL(@DataCurs,GETDATE()),@ValutaDefaultId,@setare389),1)
1485 END,CAST(@setare247 AS INT)) / @CursCap
1486 END
1487 ELSE s.PretValuta
1488 END,CAST(@Setare402 AS INT))
1489 , ROUND(CASE WHEN @DocId = 6
1490 THEN CASE WHEN s.ValutaID = @ValutaCapId
1491 THEN ISNULL(s.PretValutaRedus,s.PretValuta)
1492 ELSE ROUND(ISNULL(s.PretValutaRedus,s.PretValuta) * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @SOrderDate AND ISNULL(@PastrareCurs,0) =0
1493 THEN ISNULL(dbo.getCursReferintaAjustat(s.ValutaId,@DataCurs,@ValutaDefaultId,@setare389),1)
1494 ELSE COALESCE(s.CursValutar,dbo.getCursReferintaAjustat(s.ValutaId,ISNULL(@DataCurs,GETDATE()),@ValutaDefaultId,@setare389),1)
1495 END,CAST(@setare247 AS INT)) / @CursCap
1496 END
1497 ELSE ISNULL(s.PretValutaRedus,s.PretValuta)
1498 END,CAST(@Setare402 AS INT))
1499 , CASE WHEN @DocId = 6 THEN @CursCap
1500 ELSE CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @SOrderDate AND ISNULL(@PastrareCurs,0) = 0
1501 THEN ISNULL(dbo.getCursReferintaAjustat(s.ValutaId,@DataCurs,@ValutaDefaultId,@setare389),1)
1502 ELSE COALESCE(s.CursValutar,dbo.getCursReferintaAjustat(s.ValutaId,ISNULL(@DataCurs,GETDATE()),@ValutaDefaultId,@setare389),1)
1503 END
1504 END
1505 , CASE WHEN @DocId = 6 THEN @ValutaCapId ELSE s.ValutaID END
1506 , s.SOrderPozId
1507 , ISNULL(s.ProiectId,sp.ProiectId)
1508 , ISNULL(s.TaskId,sp.TaskId)
1509 , s.AssetId
1510 , s.Grup
1511 , ISNULL(sp.Ordine, s.Ordine) as Ordine
1512 , ISNULL(s.TermenLivrare,sp.TermenLivrare)
1513 , ISNULL(s.LuniGarantie,sp.LuniGarantie)
1514 , COALESCE(s.UmId,sp.UmId,prod.UmId)
1515 , ISNULL(s.AgentId,sp.AgentId)
1516 , ISNULL(s.ClientLivrareId,sp.ClientLivrareId)
1517 , ISNULL(s.AdresaLivrare,sp.AdresaLivrare)
1518 , ISNULL(s.Observatii,sp.Observatii)
1519 , ISNULL(s.Explicatii2,sp.Explicatii2)
1520 , ISNULL(s.DenumireProdusAfisare,sp.DenumireProdusAfisare)
1521 , ISNULL(s.DenumireProdus,sp.DenumireProdus)
1522 , ISNULL(s.ContractClientPozId,sp.ContractClientPozId)
1523 , ISNULL(s.PortofoliuProdusId,sp.PortofoliuProdusId)
1524 , ISNULL(s.CodProdusAfisare,sp.CodProdusAfisare)
1525 , ISNULL(s.CodBareAfisare,sp.CodBareAfisare)
1526 , s.ClientCustodieId
1527 , ISNULL(s.Discount,sp.Discount)
1528 , ISNULL(s.DiscountFinal,sp.DiscountFinal)
1529 , ISNULL(s.CentruCostId,sp.CentruCostId)
1530 , ISNULL(s.ArticolBugetId,sp.ArticolBugetId)
1531 , ISNULL(s.BusinessLineId,sp.BusinessLineId)
1532 , ISNULL(s.Fixed,sp.Fixed)
1533 , ISNULL(s.RegulaPretId,sp.RegulaPretId)
1534 , ISNULL(s.RegulaPretIds,sp.RegulaPretIds)
1535 , ISNULL(s.Cod1,sp.Cod1)
1536 , ISNULL(s.COd2,sp.Cod2)
1537 , ISNULL(s.Cod3,sp.Cod3)
1538 , s.PretCmp
1539 , ROUND(ISNULL(s.PretAmanunt,sp.PretAmanunt),@setare529)
1540 , ROUND(COALESCE(s.PretAmanuntRedus,sp.PretAmanuntRedus,s.PretAmanunt,sp.PretAmanunt),@setare529)
1541 --, ROUND((ROUND(ISNULL(s.PretValutaRedus,s.PretValuta) * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
1542 -- THEN dbo.getCursreferintaAjustat(s.ValutaId,@dataCurs,@valutaDefaultId,@setare389)
1543 -- ELSE ISNULL(s.cursvalutar,dbo.getCursreferintaAjustat(s.ValutaId,ISNULL(@DataCurs, GETDATE()),@ValutaDefaultId,@setare389))
1544 -- END,CAST(@setare247 AS INT)))
1545 -- * CASE WHEN rd.SorderPozId IS NOT NULL THEN rd.Cant ELSE s.Cant END,@setare377)
1546 --, ROUND((ROUND(ISNULL(s.PretValutaRedus,s.PretValuta) * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
1547 -- THEN dbo.getCursreferintaAjustat(s.ValutaId,@dataCurs,@valutaDefaultId,@setare389)
1548 -- ELSE ISNULL(s.cursvalutar,dbo.getCursreferintaAjustat(s.ValutaId,ISNULL(@DataCurs, GETDATE()),@ValutaDefaultId,@setare389))
1549 -- END,CAST(@setare247 AS INT)))
1550 -- * CASE WHEN rd.SorderPozId IS NOT NULL THEN rd.Cant ELSE s.Cant END
1551 -- * ISNULL(@TvaP, t.Tva ) * (1-ISNULL(@TaxInvP,0)) / 100.00, @setare377)
1552 --, ROUND((ROUND(s.PretValuta * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
1553 -- THEN dbo.getCursreferintaAjustat(s.ValutaId,@dataCurs,@valutaDefaultId,@setare389)
1554 -- ELSE ISNULL(s.cursvalutar,dbo.getCursreferintaAjustat(s.ValutaId,ISNULL(@DataCurs, GETDATE()),@ValutaDefaultId,@setare389))
1555 -- END,CAST(@setare247 AS INT)))
1556 -- * CASE WHEN rd.SorderPozId IS NOT NULL THEN rd.Cant ELSE s.Cant END,CAST(@setare351 AS INT))
1557 --, ROUND((ROUND(s.PretValuta * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
1558 -- THEN dbo.getCursreferintaAjustat(s.ValutaId,@dataCurs,@valutaDefaultId,@setare389)
1559 -- ELSE ISNULL(s.cursvalutar,dbo.getCursreferintaAjustat(s.ValutaId,ISNULL(@DataCurs, GETDATE()),@ValutaDefaultId,@setare389))
1560 -- END,CAST(@setare247 AS INT)))
1561 -- * CASE WHEN rd.SorderPozId IS NOT NULL THEN rd.Cant ELSE s.Cant END
1562 -- * ISNULL(@TvaP,t.Tva) * (1-ISNULL(@TaxInvP,0)),CAST(@setare351 AS INT))
1563 FROM #ComenziPartiale temp
1564 INNER JOIN dbo.SOrderPoz s (NOLOCK)
1565 ON s.SOrderPozId = temp.SOrderPozId
1566 INNER JOIN dbo.SOrderPoz sp (NOLOCK)
1567 ON s.SOrderPozParentId = sp.SOrderPozId
1568 INNER JOIN dbo.tblProduse prod (NOLOCK)
1569 ON prod.ProdusId = s.ProdusId
1570 INNER JOIN dbo.tblTva t (NOLOCK)
1571 ON t.TvaId = prod.TvaId
1572 LEFT JOIN inv.IesPoz ipp
1573 ON ipp.IesPozId = (SELECT MAX(IesPozId) FROM inv.IesPoz (NOLOCK) WHERE IesCapId = @IesCapId AND SorderPozId = temp.ParentSorderPozId)
1574 --ipp.SOrderPozId = temp.ParentSorderPozId
1575 --AND ipp.IesCapId = @IesCapId
1576 WHERE prod.TipItem = 'P'
1577 AND temp.IntrPozId IS NOT NULL
1578 AND ISNUMERIC(temp.CantitateXml) = 1
1579 AND ISNULL(temp.CantitateXml,0) > 0
1580
1581 /*UPDATE poz
1582 SET poz.IntrPozId = null
1583 ,poz.FurnizorId = null
1584 ,poz.GestiuneId = null
1585 ,poz.CantCmdFurn = null
1586 ,poz.FurnizorOriginalId = null
1587 ,poz.NumarIntr = null
1588 ,poz.DataIntr = null
1589 ,poz.DocIntrId = null
1590 ,poz.TipDocIntrId = null
1591 ,poz.DataScadentaIntr = null
1592 ,poz.NumarFactIntr = null
1593 ,poz.DataFactIntr = null
1594 ,poz.PretIntrare = null
1595 ,poz.PretIntrareRedus = null
1596 ,poz.PretCost = null
1597 ,poz.PretAmanunt = null
1598 ,poz.PretVanzare = null
1599 ,poz.TvaIntrare = null
1600 ,poz.Custodie = null
1601 ,poz.AssetId = null
1602 ,poz.FirmaId = null
1603 ,poz.DivizieId = null
1604 ,poz.IntrPozOrigId = null
1605 ,poz.POrderPozId = null
1606 ,poz.ContractFurnizorPozId = null
1607 ,poz.ValutaCmdFurnId = null
1608 ,poz.ValutaCtrFurnId = null
1609 ,poz.PretCmdFurn = null
1610 ,poz.PretCtrFurn = null
1611 ,poz.ExplicatiiIntr1 = null
1612 ,poz.ExplicatiiIntr2 = null
1613 ,poz.PretIntrareValuta = null
1614 ,poz.ValutaIntrareId = null
1615 ,poz.CursIntrare = null
1616 ,poz.ValutaIntrareDefaultId = null
1617 ,poz.Cant = poz.Cant - temp.CantitateXml
1618 ,poz.CantLivrata=ISNULL(poz.CantLivrata, 0) + temp.CantitateXml
1619 FROM dbo.SorderPoz poz
1620 INNER JOIN #ComenziPartiale temp
1621 ON temp.SorderPozId = poz.SorderPozId
1622 INNER JOIN dbo.tblProduse pr (NOLOCK)
1623 ON pr.ProdusId = temp.Produsid
1624 WHERE pr.TipItem = 'P'
1625 AND temp.IntrPozId IS NOT NULL
1626 AND ISNUMERIC(temp.CantitateXml) = 1
1627 AND ISNULL(temp.CantitateXml,0) > 0
1628 AND poz.Cant - temp.CantitateXml = 0*/
1629
1630 UPDATE poz
1631 SET poz.Cant = poz.Cant - temp.CantitateXml,
1632 poz.CantLivrata = ISNULL(poz.CantLivrata, 0) + temp.CantitateXml
1633 FROM dbo.SorderPoz poz
1634 INNER JOIN #ComenziPartiale temp
1635 ON temp.SorderPozId = poz.SorderPozId
1636 INNER JOIN dbo.tblProduse pr (NOLOCK)
1637 ON pr.ProdusId = temp.Produsid
1638 WHERE pr.TipItem = 'P'
1639 AND temp.IntrPozId IS NOT NULL
1640 AND ISNUMERIC(temp.CantitateXml) = 1
1641 AND ISNULL(temp.CantitateXml,0) > 0
1642 --AND poz.Cant - temp.CantitateXml > 0
1643 END
1644
1645 ELSE
1646 BEGIN
1647 WHILE EXISTS (SELECT TOP 1 temp.SOrderPozId
1648 FROM #ComenziPartiale temp
1649 INNER JOIN dbo.SOrderPoz s (NOLOCK)
1650 ON s.SOrderPozId = temp.SOrderPozId
1651 INNER JOIN dbo.tblProduse prod (NOLOCK)
1652 ON prod.ProdusId = s.ProdusId
1653 WHERE prod.TipItem = 'P'
1654 AND temp.IntrPozId IS NOT NULL
1655 AND ISNUMERIC(temp.CantitateXml) = 1
1656 AND ISNULL(temp.CantitateXml,0) > 0
1657 )
1658 BEGIN
1659 SELECT TOP 1 @ProdusId = s.ProdusId
1660 , @SorderPozId = s.SOrderPozId
1661 , @IntrPozId = s.IntrPozId
1662 , @GestiuneId = s.GestiuneId
1663 , @SerieIntrare = s.SerieIntrare
1664 , @LotIntrare = s.LotIntrare
1665 , @DataFabricare = s.DataFabricare
1666 , @DataExpirare = s.DataExpirare
1667 , @cantDeInserat = temp.CantitateXml
1668 FROM #ComenziPartiale temp
1669 INNER JOIN dbo.SOrderPoz s (NOLOCK)
1670 ON s.SOrderPozId = temp.SOrderPozId
1671 INNER JOIN dbo.tblProduse prod (NOLOCK)
1672 ON prod.ProdusId = s.ProdusId
1673 WHERE prod.TipItem = 'P'
1674 AND temp.IntrPozId IS NOT NULL
1675 AND ISNUMERIC(temp.CantitateXml) = 1
1676 AND temp.CantitateXml > 0
1677
1678 SELECT @RegulaProdusIdAplicata = null
1679 , @TipRegulaPret = null
1680 , @ListaPretId = null
1681 , @BlocatRegula = null
1682 , @PretVanzare = null
1683 , @PretVanzareRedus = null
1684 , @PretLista = null
1685 , @PretListaRedus = null
1686 , @Adaos = null
1687 , @CursValutar = null
1688 , @Reducere = null
1689 , @ValutaListaId = null
1690 , @ReducereFinala = null
1691 , @PretAmanunt = null
1692 , @PretAmanuntRedus = null
1693 , @ReducereAmanunt = null
1694 , @AdaosAmanunt = null
1695 , @PretRecomandat = null
1696
1697 EXEC [dbo].[GetPretDupaRegulaLista]
1698 @SYS_PARTID = @SYS_PARTID
1699 , @FirmaId = @SYS_UNITID
1700 , @DivizieId = @SYS_DIVID
1701 , @ClientId = @ClientId
1702 , @DocId = @DocId
1703 , @TermenPlataId = @TermenPlataId
1704 , @ProdusId = @ProdusId
1705 , @Cantitate = @cantDeInserat
1706 , @IntrPozId = @IntrPozId
1707 , @SerieIntrare = @SerieIntrare
1708 , @LotIntrare = @LotIntrare
1709 , @DataFabricare = @DataFabricare
1710 , @DataExpirare = @DataExpirare
1711 , @GestiuneId = @GestiuneId
1712 , @DataDocument = @Datafactura
1713 , @ValutaCapId = @ValutaCapId
1714 , @CursCap = @CursCap
1715 , @Global = 0
1716 , @TipDocId = @TipDocId
1717 , @SorderCapId = @SorderCapId
1718 , @ModPlataId = @ModPlataId
1719 , @RegulaProdusIdAplicata = @RegulaProdusIdAplicata OUTPUT
1720 , @TipRegula = @TipRegulaPret OUTPUT
1721 , @ListaPretId = @ListaPretId OUTPUT
1722 , @Blocat = @BlocatRegula OUTPUT
1723 , @PretVanzare = @PretVanzare OUTPUT
1724 , @PretVanzareRedus = @PretVanzareRedus OUTPUT
1725 , @PretLista = @PretLista OUTPUT
1726 , @Adaos = @Adaos OUTPUT
1727 , @CursValutar = @CursValutar OUTPUT
1728 , @Reducere = @Reducere OUTPUT
1729 , @ValutaId = @ValutaListaId OUTPUT
1730 , @ReducereFinala = @ReducereFinala OUTPUT
1731 , @PretAmanunt = @PretAmanunt OUTPUT
1732 , @PretAmanuntRedus = @PretAmanuntRedus OUTPUT
1733 , @ReducereAmanunt = @ReducereAmanunt OUTPUT
1734 , @AdaosAmanunt = @AdaosAmanunt OUTPUT
1735 , @PretRecomandat = @PretRecomandat OUTPUT
1736
1737 SELECT @DiscountPromotie = null
1738 , @DiscountPromotieFinal = null
1739 , @AdaosPromotie = null
1740 , @ReguliIds = null
1741 , @Regula = null
1742 , @Fixed = null
1743 , @EroarePret = null
1744
1745 SELECT @Regula = NumeRegula
1746 , @Fixed = Fixed
1747 , @ReguliIds = RegulaPretId
1748 FROM dbo.ReguliPreturi (NOLOCK)
1749 WHERE RegulaPretId = @RegulaProdusIdAplicata
1750
1751 IF ISNULL(@Fixed,0) = 0
1752 BEGIN
1753 EXEC [dbo].[GetPromotieRegula]
1754 @SYS_PARTID = @SYS_PARTID
1755 , @FirmaId = @SYS_UNITID
1756 , @DivizieId = @SYS_DIVID
1757 , @ProdusId = @ProdusId
1758 , @ClientId = @ClientId
1759 , @DocId = @DocId
1760 , @TermenPlataId = @TermenPlataId
1761 , @Cantitate = @cantDeInserat
1762 , @RegulaPrincipalaId = @RegulaProdusIdAplicata
1763 , @ModPlataId = @ModPlataId
1764 , @TipDocId = @TipDocId
1765 , @DiscountPromotie = @DiscountPromotie OUTPUT
1766 , @DiscountPromotieFinal = @DiscountPromotieFinal OUTPUT
1767 , @AdaosPromotie = @AdaosPromotie OUTPUT
1768 , @ReguliIds = @ReguliIds OUTPUT
1769
1770 SELECT @Reducere = ISNULL(@Reducere,0) + ISNULL(@DiscountPromotie,0)
1771 , @ReducereFinala = ISNULL(@ReducereFinala,0) + ISNULL(@DiscountPromotieFinal,0)
1772 , @Adaos = ISNULL(@Adaos,0) + ISNULL(@AdaosPromotie,0)
1773
1774 SET @PretVanzareRedus = @PretVanzare * (1 - ISNULL(@Reducere,0)/100.00) * (1 - ISNULL(@ReducereFinala,0)/100.00)
1775 SET @PretListaRedus = @PretLista * (1 - ISNULL(@Reducere,0)/100.00) * (1 - ISNULL(@ReducereFinala,0)/100.00)
1776 END
1777
1778 SELECT @PretVanzare = ROUND(@PretVanzare,CAST(@setare247 AS INT))
1779 , @PretVanzareRedus = ROUND(ISNULL(@PretVanzareRedus,@PretVanzare),CAST(@setare247 AS INT))
1780 , @PretLista = ROUND(@PretLista,CAST(@setare402 AS INT))
1781 , @PretListaRedus = ROUND(ISNULL(@PretListaRedus,@PretLista),CAST(@setare402 AS INT))
1782 , @Reducere = ISNULL(@Reducere,0)
1783 , @Adaos = ISNULL(@Adaos,0)
1784 , @ValutaListaId = ISNULL(@ValutaListaId,@ValutaDefaultId)
1785 , @CursValutar = ISNULL(@CursValutar,1)
1786 , @PretRecomandat = ROUND(@PretRecomandat,CAST(@setare247 AS INT))
1787
1788 IF @PretVanzareRedus IS NULL
1789 BEGIN
1790 IF @RegulaProdusIdAplicata IS NULL
1791 BEGIN
1792 SELECT @EroarePret = ISNULL(SysErp.ERP.textdictionary('Nu exista pret asociat produsului',@SYS_LANGID),'Nu exista pret asociat produsului')
1793 + '<br>' + ISNULL(DenumireProdus,'')
1794 FROM dbo.tblProduse (NOLOCK)
1795 WHERE ProdusId = @ProdusId
1796
1797 RAISERROR (@EroarePret,16,1)
1798 END
1799 ELSE
1800 BEGIN
1801 SELECT @PretVanzare = 0
1802 , @PretVanzareRedus = 0
1803 , @PretLista = 0
1804 , @PretListaRedus = 0
1805 , @PretRecomandat = 0
1806 END
1807 END
1808
1809 BEGIN
1810 UPDATE st
1811 SET st.CantRezervata = ISNULL(st.CantRezervata, 0) - @cantDeInserat
1812 , st.CantNevalidata = ISNULL(st.CantNevalidata, 0) + @cantDeInserat
1813 FROM inv.Stoc st
1814 INNER JOIN #ComenziPartiale temp
1815 ON st.ProdusId = temp.ProdusId
1816 AND st.IntrPozId = temp.IntrPozId
1817 AND st.GestiuneId = temp.GestiuneId
1818 AND ISNULL(st.SerieIntrare, '') = ISNULL(temp.SerieIntrare, '')
1819 AND ISNULL(st.LotIntrare, '') = ISNULL(temp.LotIntrare, '')
1820 AND ISNULL(st.DataFabricare, '1990-01-01') = ISNULL(temp.DataFabricare, '1990-01-01')
1821 AND ISNULL(st.DataExpirare, '1990-01-01') = ISNULL(temp.DataExpirare, '1990-01-01')
1822 AND ISNULL(st.ClientCustodieId, 0) = ISNULL(temp.ClientCustodieId, 0)
1823 WHERE temp.SOrderPozId = @SorderPozId
1824
1825 INSERT INTO inv.IesPoz
1826 (IesCapId
1827 ,ParentIesPozId
1828 ,FirmaId
1829 ,DivizieId
1830 ,ProdusId
1831 ,CantIesire
1832 ,PretVanzare
1833 ,PretVanzareRedus
1834 ,Tva
1835 ,CantFacturata
1836 ,FurnizorId
1837 ,FurnizorOriginalId
1838 ,NumarIntr
1839 ,DataIntr
1840 ,DocIntrId
1841 ,TipDocIntrId
1842 ,DataScadentaIntr
1843 ,NumarFactIntr
1844 ,DataFactIntr
1845 ,PretIntrare
1846 ,PretIntrareRedus
1847 ,PretCost
1848 ,GestiuneId
1849 ,LotIntrare
1850 ,DataExpirare
1851 ,TvaIntrare
1852 ,IntrPozId
1853 ,IntrPozOrigId
1854 ,DataFabricare
1855 ,SerieIntrare
1856 ,POrderPozId
1857 ,ContractFurnizorPozId
1858 ,ValutaCmdFurnId
1859 ,ValutaCtrFurnId
1860 ,PretCmdFurn
1861 ,PretCtrFurn
1862 --,TaxCode
1863 --,TaxInv
1864 ,ExplicatiiIntr1
1865 ,ExplicatiiIntr2
1866 ,PretIntrareValuta
1867 ,ValutaIntrareId
1868 ,CursIntrare
1869 ,PretVanzareValuta
1870 ,PretVanzareValutaRedus
1871 ,CursValutarVanzare
1872 ,ValutaVanzareId
1873 ,SorderPozId
1874 ,ProiectId
1875 ,TaskId
1876 ,AssetId
1877 ,Grup
1878 ,Ordine
1879 ,TermenLivrare
1880 ,LuniGarantie
1881 ,UmId
1882 ,AgentId
1883 ,ClientLivrareId
1884 ,AdresaLivrare
1885 ,Explicatii1
1886 ,Explicatii2
1887 ,DenumireProdusAfisare
1888 ,DenumireProdus
1889 ,ContractClientPozId
1890 ,PortofoliuProdusId
1891 ,CodProdusAfisare
1892 ,CodBareAfisare
1893 ,ClientCustodieId
1894 ,Discount
1895 ,discountFinal
1896 ,CentruCostId
1897 ,ArticolBugetId
1898 ,BusinessLineId
1899 ,Fixed
1900 ,RegulaPretId
1901 ,RegulaPretIds
1902 ,Cod1
1903 ,Cod2
1904 ,Cod3
1905 ,PretCmp
1906 ,PretAmanunt
1907 ,PretAmanuntRedus
1908 --,ValoareRedusaFaraTva
1909 --,ValoareRedusaTva
1910 --,ValoareFaraTva
1911 --,ValoareTva
1912 ,PretRecomandat
1913 )
1914 SELECT @IesCapId
1915 ,ISNULL(ipp.IesPozId,@ParentIesPozId)
1916 ,@SYS_UNITID
1917 ,@SYS_DIVID
1918 ,s.ProdusId
1919 ,@cantDeInserat
1920 ,ROUND(@PretVanzare,cast(@setare247 as int))
1921 ,ROUND(ISNULL(@PretVanzareRedus,@PretVanzare),cast(@setare247 as int))
1922 ,t.Tva --ISNULL(@TvaP, t.Tva )
1923 ,CASE WHEN @DocId = 8 THEN 0 ELSE @cantDeInserat END
1924 ,s.FurnizorId
1925 ,s.FurnizorOriginalId
1926 ,s.NumarIntr
1927 ,s.DataIntr
1928 ,s.DocIntrId
1929 ,s.TipDocIntrId
1930 ,s.DataScadentaIntr
1931 ,s.NumarFactIntr
1932 ,s.DataFactIntr
1933 ,s.PretIntrare
1934 ,s.PretIntrareRedus
1935 ,s.PretCost
1936 ,s.GestiuneId
1937 ,s.LotIntrare
1938 ,s.DataExpirare
1939 ,s.TvaIntrare
1940 ,s.IntrPozId
1941 ,s.IntrPozOrigId
1942 ,s.DataFabricare
1943 ,s.SerieIntrare
1944 ,s.POrderPozId
1945 ,s.ContractFurnizorPozId
1946 ,s.ValutaCmdFurnId
1947 ,s.ValutaCtrFurnId
1948 ,s.PretCmdFurn
1949 ,s.PretCtrFurn
1950 --,@TaxCodeP
1951 --,@TaxInvP
1952 ,s.ExplicatiiIntr1
1953 ,s.ExplicatiiIntr2
1954 ,s.PretIntrareValuta
1955 ,s.ValutaIntrareId
1956 ,s.CursIntrare
1957 ,ROUND(@PretLista,cast(@setare402 as int))
1958 ,ROUND(ISNULL(@PretListaRedus,@PretLista),cast(@setare402 as int))
1959 ,@CursValutar
1960 ,@ValutaListaId
1961 ,s.SOrderPozId
1962 ,ISNULL(s.ProiectId,sp.ProiectId)
1963 ,ISNULL(s.TaskId,sp.TaskId)
1964 ,s.AssetId
1965 ,s.Grup
1966 ,ISNULL(sp.Ordine, s.Ordine) as Ordine
1967 ,ISNULL(s.TermenLivrare,sp.TermenLivrare)
1968 ,ISNULL(s.LuniGarantie,sp.LuniGarantie)
1969 ,COALESCE(s.UmId,sp.UmId,prod.UmId)
1970 ,ISNULL(s.AgentId,sp.AgentId)
1971 ,ISNULL(s.ClientLivrareId,sp.ClientLivrareId)
1972 ,ISNULL(s.AdresaLivrare,sp.AdresaLivrare)
1973 ,ISNULL(s.Observatii,sp.Observatii)
1974 ,ISNULL(s.Explicatii2,sp.Explicatii2)
1975 ,ISNULL(s.DenumireProdusAfisare,sp.DenumireProdusAfisare)
1976 ,ISNULL(s.DenumireProdus,sp.DenumireProdus)
1977 ,ISNULL(s.ContractClientPozId,sp.ContractClientPozId)
1978 ,ISNULL(s.PortofoliuProdusId,sp.PortofoliuProdusId)
1979 ,ISNULL(s.CodProdusAfisare,sp.CodProdusAfisare)
1980 ,ISNULL(s.CodBareAfisare,sp.CodBareAfisare)
1981 ,s.ClientCustodieId
1982 ,@Reducere
1983 ,@ReducereFinala
1984 ,ISNULL(s.CentruCostId,sp.CentruCostId)
1985 ,ISNULL(s.ArticolBugetId,sp.ArticolBugetId)
1986 ,ISNULL(s.BusinessLineId,sp.BusinessLineId)
1987 ,@Fixed
1988 ,@RegulaProdusIdAplicata
1989 ,@ReguliIds
1990 ,ISNULL(s.Cod1,sp.Cod1)
1991 ,ISNULL(s.Cod2,sp.Cod2)
1992 ,ISNULL(s.Cod3,sp.Cod3)
1993 ,s.PretCmp
1994 ,ROUND(@PretAmanunt,@setare529)
1995 ,ROUND(ISNULL(@PretAmanuntRedus,@PretAmanunt),@setare529)
1996 --,ROUND(ROUND(ISNULL(@PretVanzareRedus,@PretVanzare),CAST(@setare247 AS INT)) * @cantDeInserat,@setare377)
1997 -- ,ROUND(ROUND(ISNULL(@PretVanzareRedus,@PretVanzare),CAST(@setare247 AS INT)) * @cantDeInserat * ISNULL(@TvaP,t.Tva) * (1-ISNULL(@TaxInvP,0)) / 100.00,@setare377)
1998 -- ,ROUND(ROUND(@PretVanzare,CAST(@setare247 AS INT)) * @cantDeInserat,CAST(@setare351 AS INT))
1999 -- ,ROUND(ROUND(@PretVanzare,CAST(@setare247 AS INT)) * @cantDeInserat * ISNULL(@TvaP,t.Tva) * (1-ISNULL(@TaxInvP,0)) / 100.00,CAST(@setare351 AS INT))
2000 ,@PretRecomandat
2001 FROM #ComenziPartiale temp
2002 INNER JOIN dbo.SorderPoz s (NOLOCK)
2003 ON s.SorderPozId = temp.SorderPozId
2004 INNER JOIN dbo.SorderPoz sp (NOLOCK)
2005 ON sp.SorderPozId = s.SorderPozParentId
2006 INNER JOIN dbo.tblProduse prod (NOLOCK)
2007 ON prod.ProdusId = s.ProdusId
2008 INNER JOIN dbo.tblTva t (NOLOCK)
2009 ON t.TvaId = prod.TvaId
2010 LEFT JOIN inv.IesPoz ipp (NOLOCK)
2011 ON ipp.IesPozId = (SELECT MAX(IesPozId) FROM inv.IesPoz (NOLOCK) WHERE IesCapId = @IesCapId AND SorderPozId = temp.ParentSorderPozId)
2012 --ipp.SorderPozId = temp.ParentSorderPozId
2013 --AND ipp.IesCapid = @IesCapId
2014 WHERE temp.SorderPozId = @SorderPozId
2015
2016 /*UPDATE s
2017 SET [IntrPozId] = null
2018 ,[FurnizorId] = null
2019 ,[GestiuneId] = null
2020 ,[CantCmdFurn] = null
2021 ,[FurnizorOriginalId] = null
2022 ,[NumarIntr] = null
2023 ,[DataIntr] = null
2024 ,[DocIntrId] = null
2025 ,[TipDocIntrId] = null
2026 ,[DataScadentaIntr] = null
2027 ,[NumarFactIntr] = null
2028 ,[DataFactIntr] = null
2029 ,[PretIntrare] = null
2030 ,[PretIntrareRedus] = null
2031 ,[PretCost] = null
2032 ,[PretAmanunt] = null
2033 ,[PretVanzare] = null
2034 ,[TvaIntrare] = null
2035 ,[Custodie] = null
2036 ,[AssetId] = null
2037 ,[FirmaId] = null
2038 ,[DivizieId] = null
2039 ,[IntrPozOrigId] = null
2040 ,[POrderPozId] = null
2041 ,[ContractFurnizorPozId] = null
2042 ,[ValutaCmdFurnId] = null
2043 ,[ValutaCtrFurnId] = null
2044 ,[PretCmdFurn] = null
2045 ,[PretCtrFurn] = null
2046 ,[ExplicatiiIntr1] = null
2047 ,[ExplicatiiIntr2] = null
2048 ,[PretIntrareValuta] = null
2049 ,[ValutaIntrareId] = null
2050 ,[CursIntrare] = null
2051 ,[ValutaIntrareDefaultId] = null
2052 ,s.Cant = s.Cant - @cantDeInserat
2053 FROM dbo.SOrderPoz s (NOLOCK)
2054 WHERE s.SOrderPozId = @SorderPozId
2055 AND s.Cant - @cantDeInserat = 0*/
2056
2057 UPDATE s
2058 SET s.Cant = s.Cant - @cantDeInserat
2059 FROM dbo.SOrderPoz s (NOLOCK)
2060 WHERE s.SOrderPozId = @SorderPozId
2061 --AND s.Cant - @cantDeInserat > 0
2062
2063 UPDATE #ComenziPartiale
2064 SET CantitateXml = 0
2065 WHERE SOrderPozId = @SorderPozId
2066 END
2067 END
2068 END
2069 END
2070 END
2071
2072 IF ISNULL(@TipFactStoc,0) = 0
2073 BEGIN
2074
2075 UPDATE c
2076 SET c.CantLivrata = ISNULL(c.CantLivrata,0) + ISNULL(x.Cant,0)
2077 FROM dbo.ContracteClientiPoz c
2078 INNER JOIN (SELECT temp.ContractClientPozId
2079 , SUM(CantitateXml) as Cant
2080 FROM #ComenziPartiale temp
2081 INNER JOIN dbo.tblProduse p (NOLOCK)
2082 ON p.ProdusId = temp.ProdusId
2083 WHERE p.TipItem = 'P'
2084 AND temp.IntrPozId IS NULL
2085 AND ISNULL(temp.ContineDetalii,0) = 0
2086 AND ISNUMERIC(temp.CantitateXml) = 1
2087 AND ISNULL(temp.CantitateXml,0) > 0
2088 AND ISNULL(@Setare532,0) = 1
2089 GROUP BY temp.ContractClientPozId) x
2090 on x.ContractClientPozId = c.ContractClientPozId
2091
2092 IF ISNULL(@ReaplicareReguli,0) = 0
2093 BEGIN
2094 INSERT INTO inv.IesPoz
2095 (IesCapId
2096 ,ParentiesPozid
2097 ,FirmaId
2098 ,DivizieId
2099 ,ProdusId
2100 ,CantIesire
2101 ,PretVanzare
2102 ,PretVanzareRedus
2103 ,Tva
2104 ,CantFacturata
2105 ,PretVanzareValuta
2106 ,PretVanzareValutaRedus
2107 ,CursValutarVanzare
2108 ,ValutaVanzareId
2109 ,sorderPozId
2110 ,ContractClientPozId
2111 --,TaxCode
2112 --,TaxInv
2113 ,ProiectId
2114 ,TaskId
2115 ,AssetId
2116 ,Grup
2117 ,Ordine
2118 ,TermenLivrare
2119 ,LuniGarantie
2120 ,UmId
2121 ,AgentId
2122 ,ClientLivrareId
2123 ,AdresaLivrare
2124 ,Explicatii1
2125 ,DenumireProdusAfisare
2126 ,DenumireProdus
2127 ,PortofoliuProdusId
2128 ,CodProdusAfisare
2129 ,CodBareAfisare
2130 ,Discount
2131 ,DiscountFinal
2132 ,CentruCostId
2133 ,ArticolBugetId
2134 ,BusinessLineId
2135 ,Fixed
2136 ,RegulaPretId
2137 ,RegulaPretIds
2138 ,Explicatii2
2139 ,cod1
2140 ,cod2
2141 ,cod3
2142 ,PretCmp
2143 ,PretAmanunt
2144 ,PretAmanuntRedus
2145 --,ValoareRedusaFaraTva
2146 --,ValoareRedusaTva
2147 --,ValoareFaraTva
2148 --,ValoareTva
2149 )
2150 SELECT @IesCapId
2151 , ISNULL(ipp.IesPozId,@ParentIesPozId)
2152 , @SYS_UNITID
2153 , @SYS_DIVID
2154 , s.ProdusId
2155 , temp.CantitateXml
2156 , ROUND(CASE WHEN @DocId = 6 AND s.ValutaId = @ValutaCapId
2157 THEN s.PretValuta * @CursCap
2158 ELSE s.PretValuta * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
2159 THEN ISNULL(dbo.getCursReferintaAjustat(s.ValutaId,@dataCurs,@valutaDefaultId,@setare389),1)
2160 ELSE COALESCE(s.cursvalutar,dbo.getCursreferintaAjustat(s.ValutaId,ISNULL(@DataCurs, GETDATE()),@ValutaDefaultId,@setare389),1)
2161 END
2162 END,CAST(@setare247 AS INT))
2163 , ROUND(CASE WHEN @DocId = 6 AND s.ValutaId = @ValutaCapId
2164 THEN ISNULL(s.PretValutaRedus,s.Pretvaluta) * @CursCap
2165 ELSE ISNULL(s.PretValutaRedus,s.Pretvaluta) * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
2166 THEN ISNULL(dbo.getCursreferintaAjustat(s.ValutaId,@dataCurs,@valutaDefaultId,@setare389),1)
2167 ELSE COALESCE(s.cursvalutar,dbo.getCursreferintaAjustat(s.ValutaId,isnull(@DataCurs, GETDATE()),@ValutaDefaultId,@setare389),1)
2168 END
2169 END,CAST(@setare247 AS INT))
2170 , t.Tva --ISNULL(@TvaP, t.Tva)
2171 , CASE WHEN @DocId = 8 THEN 0 ELSE temp.CantitateXml END
2172 , ROUND(CASE WHEN @DocId = 6
2173 THEN CASE WHEN s.ValutaId = @ValutaCapId
2174 THEN s.PretValuta
2175 ELSE ROUND(s.PretValuta * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
2176 THEN ISNULL(dbo.getCursReferintaAjustat(s.ValutaId,@dataCurs,@valutaDefaultId,@setare389),1)
2177 ELSE COALESCE(s.cursvalutar,dbo.getCursreferintaAjustat(s.ValutaId,ISNULL(@DataCurs, GETDATE()),@ValutaDefaultId,@setare389),1)
2178 END,CAST(@setare247 AS INT)) / @CursCap
2179 END
2180 ELSE s.PretValuta
2181 END,cast(@setare402 as int))
2182 , ROUND(CASE WHEN @DocId = 6
2183 THEN CASE WHEN s.ValutaId = @ValutaCapId
2184 THEN isnull(s.PretValutaRedus,s.PretValuta)
2185 ELSE ROUND(ISNULL(s.PretValutaRedus,s.Pretvaluta) * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
2186 THEN ISNULL(dbo.getCursreferintaAjustat(s.ValutaId,@dataCurs,@valutaDefaultId,@setare389),1)
2187 ELSE COALESCE(s.cursvalutar,dbo.getCursreferintaAjustat(s.ValutaId,isnull(@DataCurs, GETDATE()),@ValutaDefaultId,@setare389),1)
2188 END,CAST(@setare247 AS INT)) / @CursCap
2189 END
2190 ELSE isnull(s.PretValutaRedus,s.PretValuta)
2191 END,cast(@setare402 as int))
2192 , CASE WHEN @DocId = 6 THEN @CursCap
2193 ELSE CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
2194 THEN ISNULL(dbo.getCursreferintaAjustat(s.ValutaId,@dataCurs,@valutaDefaultId,@setare389),1)
2195 ELSE COALESCE(s.cursvalutar,dbo.getCursreferintaAjustat(s.ValutaId,isnull(@DataCurs, GETDATE()),@ValutaDefaultId,@setare389),1)
2196 END
2197 END
2198 , CASE WHEN @DocId = 6 THEN @ValutaCapId ELSE s.ValutaID END
2199 , s.SorderPozId
2200 , s.ContractClientPozId
2201 --, @TaxCodeP
2202 --, @TaxInvP
2203 , s.ProiectId
2204 , s.TaskId
2205 , s.AssetId
2206 , s.Grup
2207 , s.Ordine
2208 , s.TermenLivrare
2209 , s.LuniGarantie
2210 , ISNULL(s.UmId,p.UmId)
2211 , s.AgentId
2212 , s.ClientLivrareId
2213 , s.AdresaLivrare
2214 , s.Observatii
2215 , s.DenumireProdusAfisare
2216 , s.DenumireProdus
2217 , s.PortofoliuProdusId
2218 , s.CodProdusAfisare
2219 , s.CodBareAfisare
2220 , s.Discount
2221 , s.DiscountFinal
2222 , s.CentruCostId
2223 , s.ArticolBugetId
2224 , s.BusinessLineId
2225 , s.Fixed
2226 , s.RegulaPretId
2227 , s.RegulaPretIds
2228 , s.Explicatii2
2229 , s.cod1
2230 , s.cod2
2231 , s.cod3
2232 , s.PretCmp
2233 , ROUND(s.PretAmanunt,@setare529)
2234 , ROUND(ISNULL(s.PretAmanuntRedus,s.PretAmanunt),@setare529)
2235 --, ROUND(ROUND(ISNULL(s.PretValutaRedus,s.Pretvaluta) * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
2236 -- THEN dbo.getCursreferintaAjustat(s.ValutaId,@dataCurs,@valutaDefaultId,@setare389)
2237 -- ELSE ISNULL(s.cursvalutar,dbo.getCursreferintaAjustat(s.ValutaId,ISNULL(@DataCurs, GETDATE()),@ValutaDefaultId,@setare389))
2238 -- END,CAST(@setare247 AS INT))
2239 -- * temp.CantitateXml,@setare377)
2240 --, ROUND(ROUND(ISNULL(s.PretValutaRedus,s.Pretvaluta) * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
2241 -- THEN dbo.getCursreferintaAjustat(s.ValutaId,@dataCurs,@valutaDefaultId,@setare389)
2242 -- ELSE ISNULL(s.cursvalutar,dbo.getCursreferintaAjustat(s.ValutaId,ISNULL(@DataCurs, GETDATE()),@ValutaDefaultId,@setare389))
2243 -- END,CAST(@setare247 AS INT))
2244 -- * temp.CantitateXml
2245 -- * ISNULL(@TvaP,t.Tva) * (1-ISNULL(@TaxInvP,0)) / 100.00,@setare377)
2246 --, ROUND(ROUND(s.Pretvaluta * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
2247 -- THEN dbo.getCursreferintaAjustat(s.ValutaId,@dataCurs,@valutaDefaultId,@setare389)
2248 -- ELSE ISNULL(s.cursvalutar,dbo.getCursreferintaAjustat(s.ValutaId,ISNULL(@DataCurs, GETDATE()),@ValutaDefaultId,@setare389))
2249 -- END,CAST(@setare247 AS INT))
2250 -- * temp.CantitateXml,CAST(@setare351 AS INT))
2251 --, ROUND(ROUND(s.Pretvaluta * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
2252 -- THEN dbo.getCursreferintaAjustat(s.ValutaId,@dataCurs,@valutaDefaultId,@setare389)
2253 -- ELSE ISNULL(s.cursvalutar,dbo.getCursreferintaAjustat(s.ValutaId,ISNULL(@DataCurs, GETDATE()),@ValutaDefaultId,@setare389))
2254 -- END,CAST(@setare247 AS INT))
2255 -- * temp.CantitateXml
2256 -- * ISNULL(@TvaP,t.Tva) * (1-ISNULL(@TaxInvP,0)) / 100.00,CAST(@setare351 AS INT))
2257 FROM #ComenziPartiale temp
2258 INNER JOIN dbo.SorderPoz s (NOLOCK)
2259 ON s.SorderPozId = temp.SorderPozId
2260 INNER JOIN dbo.tblProduse p (NOLOCK)
2261 ON p.ProdusId = s.ProdusId
2262 INNER JOIN dbo.tblTva t (NOLOCK)
2263 ON t.TvaId = p.TvaId
2264 LEFT JOIN inv.IesPoz ipp (NOLOCK)
2265 ON ipp.IesPozId = (SELECT MAX(IesPozId) FROM inv.IesPoz (NOLOCK) WHERE IesCapId = @IesCapId AND SorderPozId = temp.ParentSorderPozId)
2266 --ipp.SorderPozId = temp.ParentSorderPozId
2267 --AND ipp.IesCapId = @IesCapId
2268 WHERE p.TipItem = 'P'
2269 AND temp.IntrPozId IS NULL
2270 AND ISNULL(temp.ContineDetalii,0) = 0
2271 AND ISNUMERIC(temp.CantitateXml) = 1
2272 AND ISNULL(temp.CantitateXml,0) > 0
2273 END
2274 ELSE
2275 BEGIN
2276 WHILE EXISTS (SELECT TOP 1 s.SOrderPozId
2277 FROM #ComenziPartiale temp
2278 INNER JOIN dbo.SorderPoz s (NOLOCK)
2279 ON s.SOrderPozId = temp.SOrderPozId
2280 INNER JOIN dbo.tblProduse p (NOLOCK)
2281 ON p.ProdusId = s.ProdusId
2282 WHERE p.TipItem = 'P'
2283 AND temp.IntrPozId IS NULL
2284 AND ISNULL(temp.ContineDetalii,0) = 0
2285 AND ISNUMERIC(temp.CantitateXml) = 1
2286 AND ISNULL(temp.CantitateXml,0) > 0)
2287 BEGIN
2288 SELECT TOP 1 @ProdusId = s.Produsid
2289 , @SorderPozId = s.Sorderpozid
2290 , @cantDeInserat = temp.CantitateXml
2291 FROM #ComenziPartiale temp
2292 INNER JOIN dbo.SorderPoz s (NOLOCK)
2293 ON s.SOrderPozId = temp.SOrderPozId
2294 INNER JOIN dbo.tblProduse p (NOLOCK)
2295 ON p.ProdusId = s.ProdusId
2296 WHERE p.TipItem = 'P'
2297 AND temp.IntrPozId IS NULL
2298 AND ISNULL(temp.ContineDetalii,0) = 0
2299 AND ISNUMERIC(temp.CantitateXml) = 1
2300 AND ISNULL(temp.CantitateXml,0) > 0
2301
2302 SELECT @RegulaProdusIdAplicata = null
2303 , @TipRegulaPret = null
2304 , @ListaPretId = null
2305 , @BlocatRegula = null
2306 , @PretVanzare = null
2307 , @PretVanzareRedus = null
2308 , @PretLista = null
2309 , @PretListaRedus = null
2310 , @Adaos = null
2311 , @CursValutar = null
2312 , @Reducere = null
2313 , @ValutaListaId = null
2314 , @ReducereFinala = null
2315 , @PretAmanunt = null
2316 , @PretAmanuntRedus = null
2317 , @ReducereAmanunt = null
2318 , @AdaosAmanunt = null
2319 , @PretRecomandat = null
2320
2321 EXEC [dbo].[GetPretDupaRegulaLista]
2322 @SYS_PARTID = @SYS_PARTID
2323 , @FirmaId = @SYS_UNITID
2324 , @DivizieId = @SYS_DIVID
2325 , @ClientId = @ClientId
2326 , @DocId = @DocId
2327 , @TermenPlataId = @TermenPlataId
2328 , @ProdusId = @ProdusId
2329 , @Cantitate = @cantDeInserat
2330 , @DataDocument = @Datafactura
2331 , @ValutaCapId = @ValutaCapId
2332 , @CursCap = @CursCap
2333 , @Global = 0
2334 , @TipDocId = @TipDocId
2335 , @SorderCapId = @SorderCapId
2336 , @ModPlataId = @ModPlataId
2337 , @RegulaProdusIdAplicata = @RegulaProdusIdAplicata OUTPUT
2338 , @TipRegula = @TipRegulaPret OUTPUT
2339 , @ListaPretId = @ListaPretId OUTPUT
2340 , @Blocat = @BlocatRegula OUTPUT
2341 , @PretVanzare = @PretVanzare OUTPUT
2342 , @PretVanzareRedus = @PretVanzareRedus OUTPUT
2343 , @PretLista = @PretLista OUTPUT
2344 , @Adaos = @Adaos OUTPUT
2345 , @CursValutar = @CursValutar OUTPUT
2346 , @Reducere = @Reducere OUTPUT
2347 , @ValutaId = @ValutaListaId OUTPUT
2348 , @ReducereFinala = @ReducereFinala OUTPUT
2349 , @PretAmanunt = @PretAmanunt OUTPUT
2350 , @PretAmanuntRedus = @PretAmanuntRedus OUTPUT
2351 , @ReducereAmanunt = @ReducereAmanunt OUTPUT
2352 , @AdaosAmanunt = @AdaosAmanunt OUTPUT
2353 , @PretRecomandat = @PretRecomandat OUTPUT
2354
2355 SELECT @DiscountPromotie = null
2356 , @DiscountPromotieFinal = null
2357 , @AdaosPromotie = null
2358 , @ReguliIds = null
2359 , @Regula = null
2360 , @Fixed = null
2361 , @EroarePret = null
2362
2363 SELECT @Regula = NumeRegula
2364 , @Fixed = Fixed
2365 , @ReguliIds = RegulaPretId
2366 FROM dbo.ReguliPreturi (NOLOCK)
2367 WHERE RegulaPretId = @RegulaProdusIdAplicata
2368
2369 IF ISNULL(@Fixed,0) = 0
2370 BEGIN
2371 EXEC [dbo].[GetPromotieRegula]
2372 @SYS_PARTID = @SYS_PARTID
2373 , @FirmaId = @SYS_UNITID
2374 , @DivizieId = @SYS_DIVID
2375 , @ProdusId = @ProdusId
2376 , @ClientId = @ClientId
2377 , @DocId = @DocId
2378 , @TermenPlataId = @TermenPlataId
2379 , @Cantitate = @cantDeInserat
2380 , @RegulaPrincipalaId = @RegulaProdusIdAplicata
2381 , @ModPlataId = @ModPlataId
2382 , @TipDocId = @TipDocId
2383 , @DiscountPromotie = @DiscountPromotie OUTPUT
2384 , @DiscountPromotieFinal = @DiscountPromotieFinal OUTPUT
2385 , @AdaosPromotie = @AdaosPromotie OUTPUT
2386 , @ReguliIds = @ReguliIds OUTPUT
2387
2388 SELECT @Reducere = ISNULL(@Reducere,0) + ISNULL(@DiscountPromotie,0)
2389 , @ReducereFinala = ISNULL(@ReducereFinala,0) + ISNULL(@DiscountPromotieFinal,0)
2390 , @Adaos = ISNULL(@Adaos,0) + ISNULL(@AdaosPromotie,0)
2391
2392 SET @PretVanzareRedus = @PretVanzare * (1 - ISNULL(@Reducere,0)/100.00) * (1 - ISNULL(@ReducereFinala,0)/100.00)
2393 SET @PretListaRedus = @PretLista * (1 - ISNULL(@Reducere,0)/100.00) * (1 - ISNULL(@ReducereFinala,0)/100.00)
2394 END
2395
2396 SELECT @PretVanzare = ROUND(@PretVanzare,CAST(@setare247 AS INT))
2397 , @PretVanzareRedus = ROUND(ISNULL(@PretVanzareRedus,@PretVanzare),CAST(@setare247 AS INT))
2398 , @PretLista = ROUND(@PretLista,CAST(@setare402 AS INT))
2399 , @PretListaRedus = ROUND(ISNULL(@PretListaRedus,@PretLista),CAST(@setare402 AS INT))
2400 , @Reducere = ISNULL(@Reducere,0)
2401 , @Adaos = ISNULL(@Adaos,0)
2402 , @ValutaListaId = ISNULL(@ValutaListaId,@ValutaDefaultId)
2403 , @CursValutar = ISNULL(@CursValutar,1)
2404 , @PretRecomandat = ROUND(@PretRecomandat,CAST(@setare247 AS INT))
2405
2406 IF @PretVanzareRedus IS NULL
2407 BEGIN
2408 IF @RegulaProdusIdAplicata IS NULL
2409 BEGIN
2410 SELECT @EroarePret = ISNULL(SysErp.ERP.textdictionary('Nu exista pret asociat produsului',@SYS_LANGID),'Nu exista pret asociat produsului')
2411 + '<br>' + ISNULL(DenumireProdus,'')
2412 FROM dbo.tblProduse (NOLOCK)
2413 WHERE ProdusId = @ProdusId
2414
2415 RAISERROR (@EroarePret,16,1)
2416 END
2417 ELSE
2418 BEGIN
2419 SELECT @PretVanzare = 0
2420 , @PretVanzareRedus = 0
2421 , @PretLista = 0
2422 , @PretListaRedus = 0
2423 , @PretRecomandat = 0
2424 END
2425 END
2426
2427 BEGIN
2428 INSERT INTO inv.IesPoz
2429 (IesCapId
2430 ,ParentIesPozId
2431 ,FirmaId
2432 ,DivizieId
2433 ,ProdusId
2434 ,CantIesire
2435 ,PretVanzare
2436 ,PretVanzareRedus
2437 ,Tva
2438 ,CantFacturata
2439 ,PretVanzareValuta
2440 ,PretVanzareValutaRedus
2441 ,CursValutarVanzare
2442 ,ValutaVanzareId
2443 ,sorderPozId
2444 ,ContractClientPozId
2445 --,TaxCode
2446 --,TaxInv
2447 ,ProiectId
2448 ,TaskId
2449 ,AssetId
2450 ,Grup
2451 ,Ordine
2452 ,TermenLivrare
2453 ,LuniGarantie
2454 ,UmId
2455 ,AgentId
2456 ,ClientLivrareId
2457 ,AdresaLivrare
2458 ,Explicatii1
2459 ,DenumireProdusAfisare
2460 ,DenumireProdus
2461 ,PortofoliuProdusId
2462 ,CodProdusAfisare
2463 ,CodBareAfisare
2464 ,Discount
2465 ,Discountfinal
2466 ,CentruCostId
2467 ,ArticolBugetId
2468 ,BusinessLineId
2469 ,Fixed
2470 ,RegulaPretId
2471 ,RegulaPretIds
2472 ,Explicatii2
2473 ,Cod1
2474 ,Cod2
2475 ,Cod3
2476 ,PretCmp
2477 ,PretAmanunt
2478 ,PretAmanuntRedus
2479 --,ValoareRedusaFaraTva
2480 --,ValoareRedusaTva
2481 --,ValoareFaraTva
2482 --,ValoareTva
2483 ,PretRecomandat
2484 )
2485 SELECT @IesCapId
2486 , ISNULL(ipp.IesPozId,@ParentIesPozId)
2487 , @SYS_UNITID
2488 , @SYS_DIVID
2489 , s.ProdusId
2490 , @cantDeInserat
2491 , ROUND(@PretVanzare,CAST(@setare247 as int))
2492 , ROUND(ISNULL(@PretVanzareRedus,@PretVanzare),CAST(@setare247 as int))
2493 , t.Tva --ISNULL(@TvaP, t.Tva)
2494 , CASE WHEN @DocId = 8 THEN 0 ELSE @cantDeInserat END
2495 , ROUND(@PretLista,CAST(@setare402 as int))
2496 , ROUND(ISNULL(@PretListaRedus,@PretLista),CAST(@setare402 as int))
2497 , @CursValutar
2498 , @ValutaListaId
2499 , s.SorderPozId
2500 , s.ContractClientPozid
2501 --, @TaxCodeP
2502 --, @TaxInvP
2503 , s.ProiectId
2504 , s.TaskId
2505 , s.AssetId
2506 , s.Grup
2507 , s.Ordine
2508 , s.TermenLivrare
2509 , s.LuniGarantie
2510 , ISNULL(s.UmId,p.UmId)
2511 , s.AgentId
2512 , s.ClientLivrareId
2513 , s.AdresaLivrare
2514 , s.Observatii
2515 , s.DenumireProdusAfisare
2516 , s.DenumireProdus
2517 , s.PortofoliuProdusId
2518 , s.CodProdusAfisare
2519 , s.CodBareAfisare
2520 , @Reducere
2521 , @ReducereFinala
2522 , s.CentruCostId
2523 , s.ArticolBugetId
2524 , s.BusinessLineId
2525 , @Fixed
2526 , @RegulaProdusIdAplicata
2527 , @ReguliIds
2528 , s.Explicatii2
2529 , s.Cod1
2530 , s.Cod2
2531 , s.Cod3
2532 , s.PretCmp
2533 , ROUND(@PretAmanunt,@Setare529)
2534 , ROUND(ISNULL(@PretAmanuntRedus,@PretAmanunt),@setare529)
2535 --, ROUND(ROUND(ISNULL(@PretVanzareRedus,@PretVanzare),CAST(@setare247 AS INT)) * @cantDeInserat,@setare377)
2536 --, ROUND(ROUND(ISNULL(@PretVanzareRedus,@PretVanzare),CAST(@setare247 AS INT)) * @cantDeInserat * ISNULL(@TvaP,t.Tva) * (1-ISNULL(@TaxInvP,0)) / 100.00,@setare377)
2537 --, ROUND(ROUND(@PretVanzare,CAST(@setare247 AS INT)) * @cantDeInserat,CAST(@setare351 AS INT))
2538 --, ROUND(ROUND(@PretVanzare,CAST(@setare247 AS INT)) * @cantDeInserat * ISNULL(@TvaP,t.Tva) * (1-ISNULL(@TaxInvP,0)) / 100.00,CAST(@setare351 AS INT))
2539 , @PretRecomandat
2540 FROM #ComenziPartiale temp
2541 INNER JOIN dbo.SOrderPoz s (NOLOCK)
2542 ON s.SOrderPozId = temp.SOrderPozId
2543 INNER JOIN dbo.tblProduse p (NOLOCK)
2544 ON p.ProdusId = s.ProdusId
2545 INNER JOIN dbo.tblTva t (NOLOCK)
2546 ON t.TvaId = p.TvaId
2547 LEFT JOIN inv.IesPoz ipp (NOLOCK)
2548 ON ipp.IesPozId = (SELECT MAX(IesPozId) FROM inv.IesPoz (NOLOCK) WHERE IesCapId = @IesCapId AND SorderPozId = temp.ParentSorderPozId)
2549 --ipp.SOrderPozId = temp.ParentSorderPozId
2550 --AND ipp.IesCapId = @IesCapId
2551 WHERE temp.SOrderPozId = @SorderPozId
2552
2553 UPDATE #ComenziPartiale
2554 SET CantitateXml = 0
2555 WHERE SOrderPozId = @SorderPozId
2556 END
2557 END
2558 END
2559 END
2560
2561 IF @DocId <> 13
2562 BEGIN -- Inserare servicii
2563
2564 UPDATE c
2565 SET c.CantLivrata = ISNULL(c.CantLivrata,0) + ISNULL(x.Cant,0)
2566 FROM dbo.ContracteClientiPoz c
2567 INNER JOIN (SELECT temp.ContractClientPozId
2568 , SUM(CantitateXml) as Cant
2569 FROM #ComenziPartiale temp
2570 INNER JOIN dbo.tblProduse p (NOLOCK)
2571 ON p.ProdusId = temp.ProdusId
2572 WHERE p.TipItem = 'S'
2573 AND (@DocId <> 8
2574 OR(@DocId = 8 AND (temp.ParentSorderPozId IS NOT NULL
2575 OR ISNULL(@Serviciu,0) = 1)))
2576 AND ISNULL(temp.ContineDetalii,0) = 0
2577 AND ISNUMERIC(temp.CantitateXml) = 1
2578 AND ISNULL(temp.CantitateXml,0) > 0
2579 GROUP BY temp.ContractClientPozId) x
2580 on x.ContractClientPozId = c.ContractClientPozId
2581
2582 IF ISNULL(@ReaplicareReguli,0) = 0
2583 BEGIN
2584 INSERT INTO inv.IesPoz
2585 (IesCapId
2586 ,ParentIesPozId
2587 ,FirmaId
2588 ,DivizieId
2589 ,ProdusId
2590 ,CantIesire
2591 ,PretVanzare
2592 ,PretVanzareRedus
2593 ,Tva
2594 ,CantFacturata
2595 ,PretVanzareValuta
2596 ,PretVanzareValutaRedus
2597 ,CursValutarVanzare
2598 ,ValutaVanzareId
2599 ,SorderPozId
2600 ,ContractClientPozId
2601 --,TaxCode
2602 --,TaxInv
2603 ,ProiectId
2604 ,TaskId
2605 ,AssetId
2606 ,Grup
2607 ,Ordine
2608 ,LuniGarantie
2609 ,TermenLivrare
2610 ,UmId
2611 ,AgentId
2612 ,ClientLivrareId
2613 ,AdresaLivrare
2614 ,Explicatii1
2615 ,DenumireProdusAfisare
2616 ,DenumireProdus
2617 ,PortofoliuProdusId
2618 ,CodProdusAfisare
2619 ,CodBareAfisare
2620 ,discount
2621 ,DiscountFinal
2622 ,CentruCostId
2623 ,ArticolBugetId
2624 ,BusinessLineId
2625 ,Fixed
2626 ,RegulaPretId
2627 ,RegulaPretIds
2628 ,Explicatii2
2629 ,Cod1
2630 ,Cod2
2631 ,Cod3
2632 ,PretCmp
2633 ,PretAmanunt
2634 ,PretAmanuntRedus
2635 --,ValoareRedusaFaraTva
2636 --,ValoareRedusaTva
2637 --,ValoareFaraTva
2638 --,ValoareTva
2639 )
2640 SELECT @IesCapId
2641 , ISNULL(ipp.IesPozId,@ParentIesPozId)
2642 , @SYS_UNITID
2643 , @SYS_DIVID
2644 , s.ProdusId
2645 , temp.CantitateXml
2646 , ROUND(CASE WHEN @DocId = 6 AND s.ValutaId = @ValutaCapId
2647 THEN s.PretValuta * @CursCap
2648 ELSE s.PretValuta * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
2649 THEN ISNULL(dbo.getCursreferintaAjustat(s.ValutaId,@dataCurs,@valutaDefaultId,@setare389),1)
2650 ELSE COALESCE(s.cursvalutar,dbo.getCursreferintaAjustat(s.ValutaId,ISNULL(@DataCurs, GETDATE()),@ValutaDefaultId,@setare389),1)
2651 END
2652 END,CAST(@setare247 AS INT))
2653 , ROUND(CASE WHEN @DocId = 6 AND s.ValutaId = @ValutaCapId
2654 THEN ISNULL(s.PretvalutaRedus,s.PretValuta) * @CursCap
2655 ELSE ISNULL(s.PretvalutaRedus,s.PretValuta) * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
2656 THEN ISNULL(dbo.getCursreferintaAjustat(s.ValutaId,@dataCurs,@valutaDefaultId,@setare389),1)
2657 ELSE COALESCE(s.cursvalutar,dbo.getCursreferintaAjustat(s.ValutaId,ISNULL(@DataCurs,GETDATE()),@ValutaDefaultId,@setare389),1)
2658 END
2659 END,CAST(@setare247 AS INT))
2660 , t.Tva --ISNULL(@TvaS, t.Tva)
2661 , CASE WHEN @DocId = 8 THEN 0 ELSE temp.CantitateXml END
2662 , ROUND(CASE WHEN @DocId = 6
2663 THEN CASE WHEN s.ValutaId = @ValutaCapId
2664 THEN s.PretValuta
2665 ELSE ROUND(s.PretValuta * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
2666 THEN ISNULL(dbo.getCursreferintaAjustat(s.ValutaId,@dataCurs,@valutaDefaultId,@setare389),1)
2667 ELSE COALESCE(s.cursvalutar,dbo.getCursreferintaAjustat(s.ValutaId,ISNULL(@DataCurs,GETDATE()),@ValutaDefaultId,@setare389),1)
2668 END,CAST(@setare247 AS INT)) / @CursCap
2669 END
2670 ELSE s.PretValuta
2671 END,CAST(@setare402 AS INT))
2672 , ROUND(CASE WHEN @DocId = 6
2673 THEN CASE WHEN s.ValutaId = @ValutaCapId
2674 THEN ISNULL(s.PretValutaRedus, s.PretValuta)
2675 ELSE ROUND(ISNULL(s.PretValutaRedus,s.PretValuta) * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
2676 THEN ISNULL(dbo.getCursreferintaAjustat(s.ValutaId,@dataCurs,@valutaDefaultId,@setare389),1)
2677 ELSE COALESCE(s.cursvalutar,dbo.getCursreferintaAjustat(s.ValutaId,ISNULL(@DataCurs,GETDATE()),@ValutaDefaultId,@setare389),1)
2678 END,CAST(@setare247 AS INT)) / @CursCap
2679 END
2680 ELSE ISNULL(s.PretValutaRedus, s.PretValuta)
2681 END, CAST(@setare402 AS INT))
2682 , CASE WHEN @DocId = 6 THEN @CursCap
2683 ELSE CASE WHEN @DataCurs IS NOT NULL AND @DataCurs<>@Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
2684 THEN ISNULL(dbo.getCursreferintaAjustat(s.ValutaId,@dataCurs,@valutaDefaultId,@setare389),1)
2685 ELSE COALESCE(s.cursvalutar,dbo.getCursreferintaAjustat(s.ValutaId,ISNULL(@DataCurs, GETDATE()),@ValutaDefaultId,@setare389),1)
2686 END
2687 END
2688 , CASE WHEN @DocId = 6 THEN @ValutaCapId ELSE s.ValutaId END
2689 , s.SorderPozId
2690 , s.ContractClientPozId
2691 --, @TaxCodeS
2692 --, @TaxInvS
2693 , s.ProiectId
2694 , s.TaskId
2695 , s.AssetId
2696 , s.Grup
2697 , s.Ordine
2698 , s.LuniGarantie
2699 , s.TermenLivrare
2700 , ISNULL(s.UmId,p.UmId)
2701 , s.AgentId
2702 , s.ClientLivrareId
2703 , s.AdresaLivrare
2704 , s.Observatii
2705 , s.DenumireProdusAfisare
2706 , s.DenumireProdus
2707 , s.PortofoliuProdusId
2708 , s.CodProdusAfisare
2709 , s.CodBareAfisare
2710 , s.Discount
2711 , s.DiscountFinal
2712 , s.CentruCostId
2713 , s.ArticolBugetId
2714 , s.BusinessLineId
2715 , s.Fixed
2716 , s.RegulaPretId
2717 , s.RegulaPretIds
2718 , s.Explicatii2
2719 , s.Cod1
2720 , s.Cod2
2721 , s.Cod3
2722 , s.PretCmp
2723 , ROUND(s.PretAmanunt,@setare529)
2724 , ROUND(ISNULL(s.PretAmanuntRedus,s.PretAmanunt),@setare529)
2725 --, ROUND(ROUND(ISNULL(s.PretvalutaRedus,s.PretValuta) * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
2726 -- THEN dbo.getCursreferintaAjustat(s.ValutaId,@dataCurs,@valutaDefaultId,@setare389)
2727 -- ELSE ISNULL(s.cursvalutar,dbo.getCursreferintaAjustat(s.ValutaId,ISNULL(@DataCurs,GETDATE()),@ValutaDefaultId,@setare389))
2728 -- END,CAST(@setare247 AS INT))
2729 -- * temp.CantitateXml,@setare377)
2730 --, ROUND(ROUND(ISNULL(s.PretvalutaRedus,s.PretValuta) * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
2731 -- THEN dbo.getCursreferintaAjustat(s.ValutaId,@dataCurs,@valutaDefaultId,@setare389)
2732 -- ELSE ISNULL(s.cursvalutar,dbo.getCursreferintaAjustat(s.ValutaId,ISNULL(@DataCurs,GETDATE()),@ValutaDefaultId,@setare389))
2733 -- END,CAST(@setare247 AS INT))
2734 -- * temp.CantitateXml
2735 -- * ISNULL(@TvaS, t.Tva) * (1-ISNULL(@TaxInvS,0)) / 100.00, @setare377)
2736 --, ROUND(ROUND(s.PretValuta * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
2737 -- THEN dbo.getCursreferintaAjustat(s.ValutaId,@dataCurs,@valutaDefaultId,@setare389)
2738 -- ELSE ISNULL(s.cursvalutar,dbo.getCursreferintaAjustat(s.ValutaId,ISNULL(@DataCurs,GETDATE()),@ValutaDefaultId,@setare389))
2739 -- END,CAST(@setare247 AS INT))
2740 -- * temp.CantitateXml,CAST(@Setare351 AS INT))
2741 --, ROUND(ROUND(s.PretValuta * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @Sorderdate AND ISNULL(@PastrareCurs, 0) = 0
2742 -- THEN dbo.getCursreferintaAjustat(s.ValutaId,@dataCurs,@valutaDefaultId,@setare389)
2743 -- ELSE ISNULL(s.cursvalutar,dbo.getCursreferintaAjustat(s.ValutaId,ISNULL(@DataCurs,GETDATE()),@ValutaDefaultId,@setare389))
2744 -- END,CAST(@setare247 AS INT))
2745 -- * temp.CantitateXml
2746 -- * ISNULL(@TvaS, t.Tva) * (1-ISNULL(@TaxInvS,0)) / 100.00,CAST(@Setare351 AS INT))
2747 FROM #ComenziPartiale temp
2748 INNER JOIN dbo.SorderPoz s (NOLOCK)
2749 ON s.SorderPozId = temp.SorderPozId
2750 INNER JOIN dbo.tblProduse p (NOLOCK)
2751 ON p.ProdusId = s.ProdusId
2752 INNER JOIN dbo.tblTva t (NOLOCK)
2753 ON t.TvaId = p.TvaId
2754 LEFT JOIN inv.IesPoz ipp (NOLOCK)
2755 ON ipp.IesPozId = (SELECT MAX(IesPozId) FROM inv.IesPoz (NOLOCK) WHERE IesCapId = @IesCapId AND SorderPozId = temp.ParentSorderPozId)
2756 --ipp.SorderPozId = temp.ParentSorderPozId
2757 --AND ipp.IesCapId = @IesCapId
2758 WHERE p.TipItem = 'S'
2759 AND (@DocId <> 8
2760 OR(@DocId = 8 AND (temp.ParentSorderPozId IS NOT NULL
2761 OR ISNULL(@Serviciu,0) = 1)))
2762 AND ISNULL(temp.ContineDetalii,0) = 0
2763 AND ISNUMERIC(temp.CantitateXml) = 1
2764 AND temp.CantitateXml > 0
2765 END
2766 ELSE
2767 BEGIN
2768 WHILE EXISTS(SELECT TOP 1 s.SorderPozId
2769 FROM #ComenziPartiale temp
2770 INNER JOIN dbo.SOrderPoz s (NOLOCK)
2771 ON s.SorderPozId = temp.SOrderPozId
2772 INNER JOIN dbo.tblProduse p (NOLOCK)
2773 ON p.ProdusId = s.ProdusId
2774 WHERE p.TipItem = 'S'
2775 AND (@DocId <> 8
2776 OR(@DocId = 8 AND (temp.ParentSorderPozId IS NOT NULL
2777 OR ISNULL(@Serviciu,0) = 1)))
2778 AND ISNULL(temp.ContineDetalii,0) = 0
2779 AND ISNUMERIC(temp.CantitateXml) = 1
2780 AND temp.CantitateXml > 0)
2781 BEGIN
2782 SELECT TOP 1 @ProdusId = s.Produsid
2783 , @SorderPozId = s.SOrderPozId
2784 , @cantDeInserat = temp.CantitateXml
2785 FROM #ComenziPartiale temp
2786 INNER JOIN dbo.SOrderPoz s (NOLOCK)
2787 ON s.SorderPozId = temp.SOrderPozId
2788 INNER JOIN dbo.tblProduse p (NOLOCK)
2789 ON p.ProdusId = s.ProdusId
2790 WHERE p.TipItem = 'S'
2791 AND (@DocId <> 8
2792 OR(@DocId = 8 AND (temp.ParentSorderPozId IS NOT NULL
2793 OR ISNULL(@Serviciu,0) = 1)))
2794 AND ISNULL(temp.ContineDetalii,0) = 0
2795 AND ISNUMERIC(temp.CantitateXml) = 1
2796 AND temp.CantitateXml > 0
2797
2798 SELECT @RegulaProdusIdAplicata = null
2799 , @TipRegulaPret = null
2800 , @ListaPretId = null
2801 , @BlocatRegula = null
2802 , @PretVanzare = null
2803 , @PretVanzareRedus = null
2804 , @PretLista = null
2805 , @PretListaRedus = null
2806 , @Adaos = null
2807 , @CursValutar = null
2808 , @Reducere = null
2809 , @ValutaListaId = null
2810 , @ReducereFinala = null
2811 , @PretAmanunt = null
2812 , @PretAmanuntRedus = null
2813 , @ReducereAmanunt = null
2814 , @AdaosAmanunt = null
2815 , @PretRecomandat = null
2816
2817 EXEC [dbo].[GetPretDupaRegulaLista]
2818 @SYS_PARTID = @SYS_PARTID
2819 , @FirmaId = @SYS_UNITID
2820 , @DivizieId = @SYS_DIVID
2821 , @ClientId = @ClientId
2822 , @DocId = @DocId
2823 , @TermenPlataId = @TermenPlataId
2824 , @ProdusId = @ProdusId
2825 , @Cantitate = @cantDeInserat
2826 , @DataDocument = @Datafactura
2827 , @ValutaCapId = @ValutaCapId
2828 , @CursCap = @CursCap
2829 , @Global = 0
2830 , @TipDocId = @TipDocId
2831 , @SorderCapId = @SorderCapId
2832 , @ModPlataId = @ModPlataId
2833 , @RegulaProdusIdAplicata = @RegulaProdusIdAplicata OUTPUT
2834 , @TipRegula = @TipRegulaPret OUTPUT
2835 , @ListaPretId = @ListaPretId OUTPUT
2836 , @Blocat = @BlocatRegula OUTPUT
2837 , @PretVanzare = @PretVanzare OUTPUT
2838 , @PretVanzareRedus = @PretVanzareRedus OUTPUT
2839 , @PretLista = @PretLista OUTPUT
2840 , @Adaos = @Adaos OUTPUT
2841 , @CursValutar = @CursValutar OUTPUT
2842 , @Reducere = @Reducere OUTPUT
2843 , @ValutaId = @ValutaListaId OUTPUT
2844 , @ReducereFinala = @ReducereFinala OUTPUT
2845 , @PretAmanunt = @PretAmanunt OUTPUT
2846 , @PretAmanuntRedus = @PretAmanuntRedus OUTPUT
2847 , @ReducereAmanunt = @ReducereAmanunt OUTPUT
2848 , @AdaosAmanunt = @AdaosAmanunt OUTPUT
2849 , @PretRecomandat = @PretRecomandat OUTPUT
2850
2851 SELECT @DiscountPromotie = null
2852 , @DiscountPromotieFinal = null
2853 , @AdaosPromotie = null
2854 , @ReguliIds = null
2855 , @Regula = null
2856 , @Fixed = null
2857 , @EroarePret = null
2858
2859 SELECT @Regula = NumeRegula
2860 , @Fixed = Fixed
2861 , @ReguliIds = RegulaPretId
2862 FROM dbo.ReguliPreturi (nolock)
2863 WHERE RegulaPretId = @RegulaProdusIdAplicata
2864
2865 IF ISNULL(@Fixed,0) = 0
2866 BEGIN
2867 EXEC [dbo].[GetPromotieRegula]
2868 @SYS_PARTID = @SYS_PARTID
2869 , @FirmaId = @SYS_UNITID
2870 , @DivizieId = @SYS_DIVID
2871 , @ProdusId = @ProdusId
2872 , @ClientId = @ClientId
2873 , @DocId = @DocId
2874 , @TermenPlataId = @TermenPlataId
2875 , @Cantitate = @cantDeInserat
2876 , @RegulaPrincipalaId = @RegulaProdusIdAplicata
2877 , @ModPlataId = @ModPlataId
2878 , @TipDocId = @TipDocId
2879 , @DiscountPromotie = @DiscountPromotie OUTPUT
2880 , @DiscountPromotieFinal = @DiscountPromotieFinal OUTPUT
2881 , @AdaosPromotie = @AdaosPromotie OUTPUT
2882 , @ReguliIds = @ReguliIds OUTPUT
2883
2884 SELECT @Reducere = ISNULL(@Reducere,0) + ISNULL(@DiscountPromotie,0)
2885 , @ReducereFinala = ISNULL(@ReducereFinala,0) + ISNULL(@DiscountPromotieFinal,0)
2886 , @Adaos = ISNULL(@Adaos,0) + ISNULL(@AdaosPromotie,0)
2887
2888 SET @PretVanzareRedus = @PretVanzare * (1 - ISNULL(@Reducere,0)/100.00) * (1 - ISNULL(@ReducereFinala,0)/100.00)
2889 SET @PretListaRedus = @PretLista * (1 - ISNULL(@Reducere,0)/100.00) * (1 - ISNULL(@ReducereFinala,0)/100.00)
2890 END
2891
2892 SELECT @PretVanzare = ROUND(@PretVanzare,CAST(@setare247 AS INT))
2893 , @PretVanzareRedus = ROUND(ISNULL(@PretVanzareRedus,@PretVanzare),CAST(@setare247 AS INT))
2894 , @PretLista = ROUND(@PretLista,CAST(@setare402 AS INT))
2895 , @PretListaRedus = ROUND(ISNULL(@PretListaRedus,@PretLista),CAST(@setare402 AS INT))
2896 , @Reducere = ISNULL(@Reducere,0)
2897 , @Adaos = ISNULL(@Adaos,0)
2898 , @ValutaListaId = ISNULL(@ValutaListaId,@ValutaDefaultId)
2899 , @CursValutar = ISNULL(@CursValutar,1)
2900 , @PretRecomandat = ROUND(@PretRecomandat,CAST(@setare247 AS INT))
2901
2902 IF @PretVanzareRedus IS NULL
2903 BEGIN
2904 IF @RegulaProdusIdAplicata IS NULL
2905 BEGIN
2906 SELECT @EroarePret = ISNULL(SysErp.ERP.textdictionary('Nu exista pret asociat produsului',@SYS_LANGID),'Nu exista pret asociat produsului')
2907 + '<br>' + ISNULL(DenumireProdus,'')
2908 FROM dbo.tblProduse (NOLOCK)
2909 WHERE ProdusId = @ProdusId
2910
2911 RAISERROR (@EroarePret,16,1)
2912 END
2913 ELSE
2914 BEGIN
2915 SELECT @PretVanzare = 0
2916 , @PretVanzareRedus = 0
2917 , @PretLista = 0
2918 , @PretListaRedus = 0
2919 , @PretRecomandat = 0
2920 END
2921 END
2922
2923 BEGIN
2924 Insert Into inv.IesPoz
2925 (IesCapId
2926 ,ParentIesPozId
2927 ,FirmaId
2928 ,DivizieId
2929 ,ProdusId
2930 ,CantIesire
2931 ,PretVanzare
2932 ,PretVanzareRedus
2933 ,Tva
2934 ,CantFacturata
2935 ,PretVanzareValuta
2936 ,PretVanzareValutaRedus
2937 ,CursValutarVanzare
2938 ,ValutaVanzareId
2939 ,SorderPozId
2940 ,ContractClientPozId
2941 --,TaxCode
2942 --,TaxInv
2943 ,ProiectId
2944 ,TaskId
2945 ,AssetId
2946 ,Grup
2947 ,Ordine
2948 ,LuniGarantie
2949 ,TermenLivrare
2950 ,UmId
2951 ,AgentId
2952 ,ClientLivrareId
2953 ,AdresaLivrare
2954 ,Explicatii1
2955 ,DenumireProdusAfisare
2956 ,DenumireProdus
2957 ,PortofoliuProdusId
2958 ,CodProdusAfisare
2959 ,CodBareAfisare
2960 ,discount
2961 ,DiscountFinal
2962 ,CentruCostId
2963 ,ArticolBugetId
2964 ,BusinessLineId
2965 ,Fixed
2966 ,RegulaPretId
2967 ,RegulaPretIds
2968 ,Explicatii2
2969 ,Cod1
2970 ,Cod2
2971 ,Cod3
2972 ,PretCmp
2973 ,PretAmanunt
2974 ,PretAmanuntRedus
2975 --,ValoareRedusaFaraTva
2976 --,ValoareRedusaTva
2977 --,ValoareFaraTva
2978 --,ValoareTva
2979 ,PretRecomandat
2980 )
2981 SELECT @IesCapId
2982 , ISNULL(ipp.IesPozId,@ParentIesPozId)
2983 , @SYS_UNITID
2984 , @SYS_DIVID
2985 , s.ProdusId
2986 , @cantDeInserat
2987 , ROUND(@PretVanzare,CAST(@setare247 as int))
2988 , ROUND(ISNULL(@PretVanzareRedus,@PretVanzare),CAST(@setare247 as int))
2989 , t.Tva --ISNULL(@TvaS, t.Tva)
2990 , CASE WHEN @DocId = 8 THEN 0 ELSE @cantDeInserat END
2991 , ROUND(@PretLista,CAST(@Setare402 as int))
2992 , ROUND(ISNULL(@PretListaRedus,@PretLista), CAST(@Setare402 as int))
2993 , @CursValutar
2994 , @ValutaListaId
2995 , s.SorderPozId
2996 , s.ContractClientPozId
2997 --, @TaxCodeS
2998 --, @TaxInvS
2999 , s.ProiectId
3000 , s.TaskId
3001 , s.AssetId
3002 , s.Grup
3003 , s.Ordine
3004 , s.LuniGarantie
3005 , s.TermenLivrare
3006 , ISNULL(s.UmId,p.UmId)
3007 , s.AgentId
3008 , s.ClientLivrareId
3009 , s.AdresaLivrare
3010 , s.Observatii
3011 , s.DenumireProdusAfisare
3012 , s.DenumireProdus
3013 , s.PortofoliuProdusId
3014 , s.CodProdusAfisare
3015 , s.CodBareAfisare
3016 , @Reducere
3017 , @ReducereFinala
3018 , s.CentruCostId
3019 , s.ArticolBugetId
3020 , s.BusinessLineId
3021 , @Fixed
3022 , @RegulaProdusIdAplicata
3023 , @ReguliIds
3024 , s.Explicatii2
3025 , s.Cod1
3026 , s.Cod2
3027 , s.Cod3
3028 , s.PretCmp
3029 , ROUND(@PretAmanunt,@setare529)
3030 , ROUND(isnull(@PretAmanuntRedus,@PretAmanunt),@setare529)
3031 --, ROUND(ROUND(ISNULL(@PretVanzareRedus,@PretVanzare),CAST(@setare247 AS INT)) * @cantDeInserat,@setare377)
3032 --, ROUND(ROUND(ISNULL(@PretVanzareRedus,@PretVanzare),CAST(@setare247 AS INT)) * @cantDeInserat * ISNULL(@TvaS, t.Tva) * (1-ISNULL(@TaxInvS,0)) / 100.00, @setare377)
3033 --, ROUND(ROUND(@PretVanzare,CAST(@setare247 AS INT)) * @cantDeInserat,CAST(@Setare351 AS INT))
3034 --, ROUND(ROUND(@PretVanzare,CAST(@setare247 AS INT)) * @cantDeInserat * ISNULL(@TvaS, t.Tva) * (1-ISNULL(@TaxInvS,0)) / 100.00,CAST(@Setare351 AS INT))
3035 , @PretRecomandat
3036 FROM #ComenziPartiale temp
3037 INNER JOIN dbo.SorderPoz s (NOLOCK)
3038 ON s.SorderPozId = temp.SorderPozId
3039 INNER JOIN dbo.tblProduse p (NOLOCK)
3040 ON p.ProdusId = s.ProdusId
3041 INNER JOIN dbo.tblTva t (NOLOCK)
3042 ON t.TvaId = p.TvaId
3043 LEFT JOIN inv.IesPoz ipp (NOLOCK)
3044 ON ipp.IesPozId = (SELECT MAX(IesPozId) FROM inv.IesPoz (NOLOCK) WHERE IesCapId = @IesCapId AND SorderPozId = temp.ParentSorderPozId)
3045 --ipp.SorderpozId = temp.parentSorderPozid
3046 --and ipp.iescapId = @iescapid
3047 WHERE temp.SorderPozid = @SorderPozId
3048
3049 UPDATE #ComenziPartiale
3050 SET CantitateXml = 0
3051 WHERE SOrderPozId = @SorderPozId
3052
3053 END
3054 END
3055 END
3056 END
3057
3058 --Verificare daca s-au inserat pozitii cu pret vanzare sub pretul de cost
3059
3060 IF EXISTS (SELECT TOP 1 p.IesPozId
3061 FROM inv.IesPoz p (NOLOCK)
3062 WHERE p.IntrPozId IS NOT NULL
3063 AND p.PretVanzareRedus < ISNULL(p.PretCost,0)
3064 AND p.IesCapId = @IesCapId
3065 AND @Setare520 = 1)
3066 BEGIN
3067 DECLARE @Produse NVARCHAR(MAX) = NULL
3068 SELECT @Produse = ISNULL(@Produse + ', ', '') + Pr.DenumireProdus
3069 FROM inv.IesPoz p (NOLOCK)
3070 inner join dbo.tblProduse Pr (NOLOCK)
3071 ON p.ProdusId = pr.ProdusId
3072 WHERE p.IntrPozId IS NOT NULL
3073 AND p.PretVanzareRedus < ISNULL(p.PretCost,0)
3074 AND p.IesCapId = @IesCapId
3075 AND @Setare520 = 1
3076 GROUP BY Pr.DenumireProdus
3077
3078 DECLARE @MsgPozSubPretCost NVARCHAR(MAX)
3079 SELECT @MsgPozSubPretCost = syserp.erp.textdictionary('Exista produse cu pretul de vanzare mai mic decat pretul de cost.', @SYS_LANGID) + ISNULL('<br>' + @Produse, '')
3080
3081 RAISERROR(@MsgPozSubPretCost,16,1)
3082 END
3083
3084 DECLARE @SorderCapComId INT
3085
3086 DECLARE ComenziCursor CURSOR FOR
3087 SELECT DISTINCT SOrderCapId
3088 FROM #ComenziPartiale cp
3089 INNER JOIN dbo.SOrderPoz s (NOLOCK)
3090 on s.SOrderPozId = cp.SOrderPozId
3091
3092 OPEN ComenziCursor
3093 FETCH NEXT FROM ComenziCursor INTO @SorderCapComId
3094
3095 WHILE @@FETCH_STATUS=0
3096 BEGIN
3097 EXEC dbo.ComandaClient_Finalizare
3098 @SorderCapID = @SorderCapComId
3099 , @SYS_UNITID = @SYS_UNITID
3100 , @SYS_DIVID = @SYS_DIVID
3101 , @SYS_USERID = @SYS_USERID
3102 , @SYS_LANGID = @SYS_LANGID
3103
3104 UPDATE dbo.SOrderCap
3105 SET IesCapId = @IesCapId
3106 WHERE SOrderCapId = @SorderCapComId
3107
3108 FETCH NEXT FROM ComenziCursor INTO @SorderCapComId
3109 END
3110
3111 CLOSE ComenziCursor
3112 DEALLOCATE ComenziCursor
3113
3114 UPDATE a
3115 SET a.DinStoc = 0
3116 ,a.ClientId = c.ClientId
3117 ,a.IesPozId = p.IesPozId
3118 FROM dbo.tblAssets a (NOLOCK)
3119 INNER JOIN inv.Iespoz p (NOLOCK)
3120 ON a.AssetId = p.AssetId
3121 INNER JOIN inv.IesCap c (NOLOCK)
3122 ON c.IesCapID = p.IesCapId
3123 WHERE p.IesCapId = @IescapId
3124 AND p.IntrPozId IS NOT NULL
3125
3126 IF ISNULL(@RecalculDinGrile,0) = 1
3127 BEGIN
3128 CREATE TABLE #DeAplicatGrila (OfertaClientPozId INT, CantIesire DECIMAL(22,8), OfertaClientGrilaId INT)
3129 INSERT #DeAplicatGrila (OfertaClientPozId, CantIesire)
3130 SELECT ISNULL(s.OfertaClientPozId,sp.OfertaClientPozID)
3131 , SUM(p.CantIesire) AS CantFacturata
3132 FROM inv.Iespoz p (NOLOCK)
3133 INNER JOIN dbo.SorderPoz s (NOLOCK)
3134 ON s.SorderPozId = p.SorderPozId
3135 LEFT JOIN dbo.SorderPoz sp (NOLOCK)
3136 ON sp.SorderPozId = s.SorderPozParentId
3137 WHERE p.IesCapId = @IescapId
3138 GROUP BY ISNULL(s.OfertaClientPozID,sp.OfertaClientPozId)
3139
3140 UPDATE g
3141 SET g.OfertaClientGrilaId = ISNULL(g1.OfertaClientGrilaId,g2.OfertaClientGrilaId)
3142 FROM #DeAplicatGrila g
3143 LEFT JOIN ( SELECT g.OfertaClientGrilaId
3144 , g.OfertaClientPozID
3145 , ROW_NUMBER() OVER (PARTITION BY g.OfertaClientPozId ORDER BY g.Cantitate) as iRow
3146 FROM dbo.tblOferteClientiPozGrile g (NOLOCK)
3147 INNER JOIN #DeAplicatGrila dag (NOLOCK)
3148 on dag.OfertaClientPozId = g.OfertaClientPozID
3149 WHERE g.Cantitate >= dag.CantIesire
3150 ) g1
3151 on g1.OfertaClientPozID = g.OfertaClientPozId
3152 AND g1.iRow = 1
3153 LEFT JOIN ( SELECT g.OfertaClientGrilaId
3154 , g.OfertaClientPozID
3155 , ROW_NUMBER() OVER (PARTITION BY g.OfertaClientPozId ORDER BY g.Cantitate DESC) as iRow
3156 FROM dbo.tblOferteClientiPozGrile g (NOLOCK)
3157 INNER JOIN #DeAplicatGrila dag (NOLOCK)
3158 on dag.OfertaClientPozId = g.OfertaClientPozID
3159 ) g2
3160 on g2.OfertaClientPozID = g.OfertaClientPozId
3161 AND g2.iRow = 1
3162
3163 UPDATE p
3164 SET p.PretVanzare = ROUND(CASE WHEN @DocId = 6 AND g.ValutaId = @ValutaCapId
3165 THEN g.PretValuta * @CursCap
3166 ELSE g.PretValuta * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @SorderDate AND ISNULL(@PastrareCurs,0) = 0
3167 THEN ISNULL(dbo.GetCursReferintaAjustat(g.ValutaId,ISNULL(@DataCurs,GETDATE()),@ValutaDefaultId,@setare389),1)
3168 ELSE COALESCE(g.CursValutar,dbo.GetCursReferintaAjustat(g.ValutaId,ISNULL(@DataCurs,GETDATE()),@ValutaDefaultId,@setare389),1)
3169 END
3170 END, CAST(@Setare247 AS INT))
3171 , p.PretVanzareRedus = ROUND(CASE WHEN @DocId = 6 AND g.ValutaId = @ValutaCapId
3172 THEN ISNULL(g.PretValutaRedus,g.PretValuta) * @CursCap
3173 ELSE ISNULL(g.PretValutaRedus,g.PretValuta) * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @SorderDate AND ISNULL(@PastrareCurs,0) = 0
3174 THEN ISNULL(dbo.GetCursReferintaAjustat(g.ValutaId,ISNULL(@DataCurs,GETDATE()),@ValutaDefaultId,@setare389),1)
3175 ELSE COALESCE(g.CursValutar,dbo.GetCursReferintaAjustat(g.ValutaId,ISNULL(@DataCurs,GETDATE()),@ValutaDefaultId,@setare389),1)
3176 END
3177 END, CAST(@Setare247 AS INT))
3178 , p.PretVanzareValuta = ROUND(CASE WHEN @DocId = 6
3179 THEN CASE WHEN g.ValutaId = @ValutaCapId
3180 THEN g.PretValuta
3181 ELSE ROUND(g.PretValuta * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @SorderDate AND ISNULL(@PastrareCurs,0) = 0
3182 THEN ISNULL(dbo.GetCursReferintaAjustat(g.ValutaId,ISNULL(@DataCurs,GETDATE()),@ValutaDefaultId,@setare389),1)
3183 ELSE COALESCE(g.CursValutar,dbo.getCursReferintaAjustat(g.ValutaId,ISNULL(@DataCurs,GETDATE()),@ValutaDefaultId,@setare389),1)
3184 END,CAST(@setare247 AS INT)) / @CursCap
3185 END
3186 ELSE g.PretValuta
3187 END,CAST(@setare402 AS INT))
3188 , p.PretVanzareValutaRedus = ROUND(CASE WHEN @DocId = 6
3189 THEN CASE WHEN g.ValutaId = @ValutaCapId
3190 THEN ISNULL(g.PretValutaRedus,g.PretValuta)
3191 ELSE ROUND(ISNULL(g.PretValutaRedus,g.PretValuta) * CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @SorderDate AND ISNULL(@PastrareCurs,0) = 0
3192 THEN ISNULL(dbo.GetCursReferintaAjustat(g.Valutaid,ISNULL(@DataCurs,GETDATE()),@ValutaDefaultId,@Setare389),1)
3193 ELSE COALESCE(g.CursValutar,dbo.GetCursReferintaAjustat(g.ValutaID,ISNULL(@DataCurs,GETDATE()),@ValutaDefaultId,@Setare389),1)
3194 END,CAST(@setare247 AS INT)) / @CursCap
3195 END
3196 ELSE ISNULL(g.PretValutaRedus,g.PretValuta)
3197 END,CAST(@setare402 AS INT))
3198 , p.ValutaVanzareId = CASE WHEN @DocId = 6 THEN @ValutaCapId ELSE g.ValutaId END
3199 , p.CursValutarVanzare = CASE WHEN @DocId = 6 THEN @CursCap
3200 ELSE CASE WHEN @DataCurs IS NOT NULL AND @DataCurs <> @SorderDate AND ISNULL(@PastrareCurs,0) = 0
3201 THEN ISNULL(dbo.GetCursReferintaAjustat(g.ValutaId,ISNULL(@DataCurs,GETDATE()),@ValutaDefaultId,@setare389),1)
3202 ELSE COALESCE(g.CursValutar,dbo.getCursReferintaAjustat(g.ValutaId,ISNULL(@DataCurs,GETDATE()),@ValutaDefaultId,@setare389),1)
3203 END
3204 END
3205 , p.Discount = g.Discount
3206 , p.DiscountFinal = g.DiscountFinal
3207 , p.RegulaPretId = g.RegulaPretId
3208 , p.RegulaPretIds = NULL
3209 , p.OfertaClientGrilaId = g.OfertaClientGrilaId
3210 FROM inv.IesPoz p
3211 INNER JOIN dbo.SorderPoz s (NOLOCK)
3212 ON s.SorderPozId = p.SorderPozId
3213 LEFT JOIN dbo.SorderPoz sp (NOLOCK)
3214 ON sp.SorderPozId = s.SorderPozParentId
3215 INNER JOIN #DeAplicatGrila temp
3216 ON temp.OfertaClientPozId = ISNULL(s.OfertaClientPozId,sp.OfertaClientPozId)
3217 INNER JOIN dbo.tblOferteClientiPozGrile g (NOLOCK)
3218 ON g.OfertaClientGrilaId = temp.OfertaClientGrilaId
3219 WHERE p.IesCapId = @IescapId
3220 END
3221
3222 DECLARE @Iespozid INT
3223 , @TipItemForTaxCode CHAR(1)
3224 , @TaxCode INT
3225 , @TaxInv BIT
3226 , @FaraTva BIT
3227 , @Tva DECIMAL(22,8)
3228
3229 --COMPLETARE TaxCode, TaxInv, Tva
3230
3231 DECLARE FacturiTaxcodeDinComanda CURSOR FOR
3232 SELECT ip.IesPozId
3233 ,ip.ProdusId
3234 ,pr.TipItem
3235 FROM inv.IesPoz ip (NOLOCK)
3236 INNER JOIN dbo.tblProduse pr (NOLOCK)
3237 ON pr.ProdusId = ip.ProdusId
3238 WHERE ip.IesCapId = @IesCapId
3239 AND ip.TaxCode IS NULL
3240
3241 OPEN FacturiTaxcodeDinComanda
3242 FETCH NEXT FROM FacturiTaxcodeDinComanda INTO @IesPozId, @ProdusId, @TipItemForTaxCode
3243
3244 WHILE @@FETCH_STATUS=0
3245 BEGIN
3246 SET @TaxCode = null
3247 SET @TaxInv = 0
3248 SET @FaraTva = 0
3249
3250 IF @TipItemForTaxCode = 'P'
3251 BEGIN
3252 EXEC [inv].[TaxCodeProdus_vanzare]
3253 @TaxCode = @TaxCode out
3254 ,@FaraTva = @FaraTva out
3255 ,@Tva = @Tva out
3256 ,@ClientId = @ClientId
3257 ,@ProdusID = @ProdusID
3258 ,@DocId = @DocId
3259 ,@TipDocId = @TipDocId
3260 ,@SYS_PARTID = @SYS_PARTID
3261 ,@SYS_UNITID = @SYS_UNITID
3262 ,@SYS_DIVID = @SYS_DIVID
3263 ,@sys_langID = @sys_langID
3264 ,@IesCapId = @IesCapId
3265 END
3266 ELSE
3267 BEGIN
3268 EXEC [inv].[TaxCodeServiciu_vanzare]
3269 @TaxCode = @TaxCode out
3270 ,@FaraTva = @FaraTva out
3271 ,@Tva = @Tva out
3272 ,@ClientId = @ClientId
3273 ,@ProdusID = @ProdusID
3274 ,@DocId = @DocId
3275 ,@TipDocId = @TipDocId
3276 ,@SYS_PARTID = @SYS_PARTID
3277 ,@SYS_UNITID = @SYS_UNITID
3278 ,@SYS_DIVID = @SYS_DIVID
3279 ,@sys_langID = @sys_langID
3280 ,@IesCapId = @IesCapId
3281 END
3282
3283 IF EXISTS(SELECT TaxCode FROM SysErp.ERP.TaxMode (NOLOCK) WHERE TaxCode = @TaxCode AND ISNULL(TaxInv,0) = 1
3284 UNION ALL
3285 SELECT TaxCode FROM dbo.MyTaxMode (NOLOCK) WHERE TaxCode = @TaxCode AND ISNULL(TaxInv,0) = 1)
3286 BEGIN
3287 SET @TaxInv = 1
3288 END
3289
3290 IF EXISTS(SELECT TaxCode FROM SysErp.ERP.TaxMode (NOLOCK) WHERE TaxCode = @TaxCode AND ISNULL(FaraTva,0) = 1
3291 UNION ALL
3292 SELECT TaxCode FROM dbo.MyTaxMode (NOLOCK) WHERE TaxCode = @TaxCode AND ISNULL(FaraTva,0) = 1)
3293 BEGIN
3294 SET @FaraTva = 1
3295 SET @Tva = 0
3296 END
3297
3298 UPDATE inv.IesPoz
3299 SET TaxCode = @TaxCode
3300 ,TaxInv = @TaxInv
3301 ,Tva = @Tva
3302 ,ValoareRedusaFaraTva = ROUND(ISNULL(PretVanzareRedus, PretVanzare) * CantIesire, @setare377)
3303 ,ValoareRedusaTva = ROUND(ISNULL(PretVanzareRedus, PretVanzare) * CantIesire * @Tva * (1-ISNULL(@TaxInv,0)) / 100.00, @setare377)
3304 ,ValoareFaraTva = ROUND(PretVanzare * CantIesire, CAST(@Setare351 AS INT))
3305 ,ValoareTva = ROUND(PretVanzare * CantIesire * @Tva * (1-ISNULL(@TaxInv,0)) / 100.00, CAST(@Setare351 AS INT))
3306 WHERE IesPozId=@IesPozId
3307
3308 FETCH NEXT FROM FacturiTaxcodeDinComanda INTO @IesPozId, @ProdusId, @TipItemForTaxCode
3309 END
3310
3311 CLOSE FacturiTaxcodeDinComanda
3312 DEALLOCATE FacturiTaxcodeDinComanda
3313
3314 IF ISNULL(@RecalculDinGrile,0) = 0
3315 BEGIN
3316 DECLARE PozitiiCuDetalii CURSOR FOR
3317 SELECT a.IesPozId
3318 FROM
3319 (
3320 SELECT IesPozId
3321 , 0 AS Ordine
3322 FROM inv.IesPoz p (NOLOCK)
3323 INNER JOIN #ComenziPartiale temp
3324 ON p.SorderPozId = temp.ParentSorderPozId
3325 WHERE p.IesCapId = @IesCapId
3326 AND ISNULL(p.ContineDetalii,0) = 1
3327 GROUP BY IesPozId
3328
3329 UNION
3330
3331 SELECT IesPozId
3332 , 1 AS Ordine
3333 FROM inv.IesPoz (NOLOCK)
3334 WHERE IesCapId = @IesCapId
3335 AND IesPozId = @ParentIesPozId
3336 ) a
3337 ORDER BY a.Ordine
3338
3339 OPEN PozitiiCuDetalii
3340 FETCH NEXT FROM PozitiiCuDetalii INTO @IesPozId
3341
3342 WHILE @@FETCH_STATUS=0
3343 BEGIN
3344 EXEC dbo.IesPoz_Reactualizare
3345 @IesPozId = @IesPozId
3346
3347 FETCH NEXT FROM PozitiiCuDetalii INTO @IesPozId
3348 END
3349
3350 CLOSE PozitiiCuDetalii
3351 DEALLOCATE PozitiiCuDetalii
3352 END
3353 --UPDATE p
3354 -- SET p.PretVanzare = ISNULL(anexa.PretVanzare / p.CantIesire,0)
3355 -- ,p.PretVanzareRedus = ISNULL(anexa.PretVanzareRedus / p.CantIesire,0)
3356 -- ,p.PretAmanunt = ISNULL(anexa.PretAmanunt / p.CantIesire,0)
3357 -- ,p.PretAmanuntRedus = ISNULL(anexa.PretAmanuntRedus / p.CantIesire,0)
3358 -- ,p.PretVanzareValuta = ISNULL(anexa.PretVanzareValuta / p.CantIesire,0)
3359 -- ,p.PretVanzareValutaRedus = ISNULL(anexa.PretVanzareValutaRedus / p.CantIesire,0)
3360 -- ,ValoareRedusaFaraTva = ROUND(ISNULL(anexa.PretVanzareRedus,0), @setare377)
3361 -- ,ValoareRedusaTva = ROUND(ISNULL(anexa.PretVanzareRedus,0) * p.Tva * (1-ISNULL(p.TaxInv,0))/100.00, @setare377)
3362 -- ,ValoareFaraTva = ROUND(ISNULL(anexa.PretVanzare,0),CAST(@setare351 AS INT))
3363 -- ,ValoareTva = ROUND(ISNULL(anexa.PretVanzare,0) * p.Tva * (1-ISNULL(p.TaxInv,0))/100.00,CAST(@setare351 AS INT))
3364 -- FROM inv.IesPoz p
3365 -- INNER JOIN (SELECT ParentIesPozId
3366 -- , SUM(ISNULL(PretVanzare,PretVanzareValuta * CursValutarVanzare) * CantIesire) as PretVanzare
3367 -- , SUM(COALESCE(PretVanzareRedus,PretVanzareValutaRedus * CursValutarVanzare,PretVanzare,PretVanzareValuta * CursValutarVanzare) * CantIesire) as PretVanzareRedus
3368 -- , SUM(PretVanzareValuta * CantIesire) as PretVanzareValuta
3369 -- , SUM(PretVanzareValutaRedus * CantIesire) as PretVanzareValutaRedus
3370 -- , SUM(PretAmanunt * CantIesire) as PretAmanunt
3371 -- , SUM(ISNULL(PretAmanuntRedus,PretAmanunt) * CantIesire) as PretAmanuntRedus
3372 -- FROM inv.IesPoz (NOLOCK)
3373 -- WHERE ParentIesPozId IS NOT NULL
3374 -- AND IesCapId = @IesCapId
3375 -- GROUP BY ParentIesPozId) anexa
3376 -- ON anexa.ParentIesPozId = p.IesPozId
3377 -- WHERE p.IesCapId = @IesCapId
3378
3379 UPDATE p
3380 SET p.Ordine = a.Ordine
3381 FROM inv.IesPoz p
3382 INNER JOIN (SELECT ROW_NUMBER() OVER (ORDER BY Ordine, IesPozId) as Ordine
3383 , IesPozId
3384 FROM inv.iespoz
3385 WHERE IesCapId = @IesCapId) a
3386 ON a.IesPozId = p.IesPozId
3387 WHERE p.IesCapId = @IesCapId
3388
3389 EXEC dbo.FacturiClienti_RecalculareTotaluri
3390 @SYS_DIVID = @SYS_DIVID
3391 , @SYS_UNITID = @SYS_UNITID
3392 , @IesCapId = @IesCapId
3393 , @FaraTva = @FaraTva
3394
3395 IF ISNULL(@Validata,0) = 1
3396 BEGIN
3397
3398 DECLARE @Plaja2Id INT = NULL
3399
3400 IF (ISNULL(@CuChitanta,0) = 1)
3401 BEGIN
3402 SELECT TOP 1 @Plaja2Id = d.Plaja2Id
3403 FROM dbo.PlajaDoc d (NOLOCK)
3404 WHERE d.DocId = @DocId
3405 AND d.FirmaId = @SYS_UNITID
3406 AND d.DivizieId = @SYS_DIVID
3407 AND d.PlajaId = @PlajaId
3408 AND d.Plaja2Id IS NOT NULL
3409 AND d.DataEnd IS NULL
3410 END
3411
3412 DECLARE @DataScadenta DATE = NULL
3413 , @TransportatorId INT = NULL
3414 , @Transportator NVARCHAR(100) = NULL
3415
3416 SELECT @DataScadenta = DataScadenta
3417 , @Plaja2Id = Plaja2Id
3418 , @DelegNume = DelegNume
3419 , @DelegAct = DelegAct
3420 , @DelegElibAct = DelegElibAct
3421 , @DelegAuto = DelegAuto
3422 , @DataExpediere = CAST(DelegData AS DATE)
3423 , @OraExpediere = CONVERT(VARCHAR(5), DelegData, 108)
3424 , @TransportatorId = TransportatorId
3425 , @Transportator = Transportator
3426 , @UnitateId = DelegatId
3427 FROM inv.IesCap (NOLOCK)
3428 WHERE IesCapId = @IesCapId
3429
3430 EXEC [inv].[FacturiIesireNumarValidare_Save]
3431 @SYS_DIVID = @SYS_DIVID
3432 ,@SYS_UNITID = @SYS_UNITID
3433 ,@SYS_PAGEID = NULL
3434 ,@IesCapID = @IesCapId
3435 ,@PlajaId = @PlajaId
3436 ,@SYS_USER = @SYS_USER
3437 ,@SYS_LANGID = @SYS_LANGID
3438 ,@DataScadenta = @DataScadenta
3439 ,@DataFactIes = @Datafactura
3440 ,@Plaja2Id = @Plaja2Id
3441 ,@DocId = @DocId
3442 ,@sys_userId = @sys_userId
3443 ,@sys_partId = @sys_partId
3444 ,@TipDocId = @TipDocId
3445 ,@DelegNume = @DelegNume
3446 ,@DelegAct = @DelegAct
3447 ,@DelegElibAct = @DelegElibAct
3448 ,@DelegAuto = @DelegAuto
3449 ,@DataExpediere = @DataExpediere
3450 ,@OraExpediere = @OraExpediere
3451 ,@DelegContact = NULL
3452 ,@ContactId = NULL
3453 ,@ClientId = @ClientId
3454 ,@DelegPrenume = @DelegPrenume
3455 ,@NumarFactIes = NULL
3456 ,@PlajaNirId = NULL
3457 ,@PastrareNrSiDataDoc = NULL
3458 ,@NumarChitanta = NULL
3459 ,@SemnatarId = NULL
3460 ,@SetareNumar = NULL
3461 ,@TransportatorId = @TransportatorId
3462 ,@Transportator = @Transportator
3463 ,@NrAWB = NULL
3464 ,@ValTransport = NULL
3465 ,@UnitateId = @UnitateId
3466 END
3467
3468 --Actualizare valoare avans
3469 DECLARE @TotalAvansPoz DECIMAL(18, 5)
3470 SELECT @TotalAvansPoz = SUM(ISNULL(P.CantIesire * CASE WHEN @DocId = 6 THEN P.PretVanzareValutaRedus ELSE P.PretVanzareRedus END, 0))
3471 FROM inv.IesCap C (NOLOCK)
3472 INNER JOIN inv.IesPoz P (NOLOCK)
3473 ON C.IesCapId = P.IesCapId
3474 WHERE C.IesCapId = @IesCapId
3475 AND ISNULL(C.Avans, 0) = 1
3476 AND p.ParentiesPozId is null
3477
3478 UPDATE inv.IesCap
3479 SET ValoareAvans = ISNULL(@TotalAvansPoz, 0)
3480 WHERE IesCapId = @IesCapId
3481
3482 SELECT @IesCapId AS IesCapId
3483 , @DocId AS DocId
3484 , @TipDocId AS TipDocId
3485 , @ClientId AS ClientId
3486 , CASE WHEN ISNULL(@ParentIesPozId,0) <> 0
3487 THEN @ParentIesPozId
3488 END AS ParentIesPozId
3489 , CASE WHEN ISNULL(@ParentIesPozId,0) <> 0
3490 THEN 'Detalii'
3491 END AS sys_opcode
3492
3493 COMMIT TRANSACTION
3494
3495 END TRY
3496
3497 BEGIN CATCH
3498 DECLARE @ErrorMessage nvarchar(4000)
3499 DECLARE @ErrorSeverity int
3500 DECLARE @ErrorState int
3501
3502 SELECT @ErrorMessage = ERROR_MESSAGE()
3503 , @ErrorSeverity = ERROR_SEVERITY()
3504 , @ErrorState = ERROR_STATE();
3505
3506
3507 RAISERROR (@ErrorMessage
3508 , @ErrorSeverity
3509 , @ErrorState)
3510
3511 IF XACT_STATE() <> 0
3512 BEGIN
3513 ROLLBACK TRANSACTION
3514 END
3515 END CATCH
3516END
3517
3518
3519;
3520;
3521;
3522;