CREATE PROCEDURE dbo.CalcSumNDS
   @IdDoc int,
   @VidDoc tinyint,
   @NameGrOper varchar(50),
   @NastrSchCenPriobr binary 
AS

declare
   @TipPredpr tinyint,
   @NameGr  varchar(20),
   @Pr_SkidOv bit

set @NameGr=''

set @NameGr=(select namegrpredpr from tbgrpredpr where idgrpredpr=(select idgrpredpr from tbpredpr where idpredpr=(select idPredpr from doccaption where iddoc=@Iddoc)))

set @TipPredpr=(select Isnull(TipPredpr,0) from tbNastrPredpr)

set @Pr_SkidOv=(select TypeFieldN from tbOsnNastr where NameFieldN='Pr_SkidOv' and idPredpr=(Select Kodskl from Doccaption where iddoc=@Iddoc))

update DocString
set SumNDS = 0
WHERE idDoc = @idDoc

if @VidDoc=1 or @VidDoc=5
-- Äëÿ ïðèõîäîâ
begin
   if ((select TypeFieldN from tbOsnNastr where NameFieldN='Pr_SkidOv' and idPredpr=(Select Kodskl from Doccaption where iddoc=@Iddoc))=1) 
   begin 
      update DocString
      set SumNDS=dbo.Rounding(0,Round(CenO*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100)*(1-ISNULL(SkidPost,0)/100),2)*NDS/100*(KolF-isnull(KolOv,0))) 
      where  IdDoc=@Iddoc  and KolOv<>0

      update DocString
      set SumNDS=dbo.Rounding(0,Round(CenO*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100)*(1-ISNULL(SkidPost,0)/100),2)*NDS/100*(KolF-ISNULL(KolOv,0)))
      where  IdDoc=@Iddoc and PrLogBKS=0 --and (KolOv is null or KolOv=0) and (ISNULL(SkidPost,0)<>0 or ISNULL(NacPosr,0)<>0)

      /*update DocString
      set SumNDS=dbo.Rounding(0,CenO*NDS/100*KolF)
      where  IdDoc=@Iddoc and PrLogBKS=0 and (KolOv is null or KolOv=0) and ISNULL(SkidPost,0)=0 and ISNULL(NacPosr,0)=0*/
      -- íó è ïóñêàé ñêèäêà ïîñòàâùèêà ðàâíà 0, ýòî íàì íå ïîìåøàåò - ïîýòîìó çàêîìåíòèðîâàë!
   
      update DocString
      set SumNDS=dbo.Rounding(0,Round(ISNULL(CenPriobr,0)*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100)*(1-ISNULL(SkidPost,0)/100),2)*NDS/100*KolF)
      where  IdDoc=@Iddoc and PrLogBKS=1 
   end
   else
   begin                                                                         
      update DocString
      set SumNDS=dbo.Rounding(0,Round(CenO*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100)*(1-ISNULL(SkidPost,0)/100),2)*NDS/100*(KolF-ISNULL(KolOv,0)))
      where  IdDoc=@Iddoc and PrLogBKS=0 --and (ISNULL(SkidPost,0)<>0 or ISNULL(NacPosr,0)<>0)
      
      /*update DocString
      set SumNDS=dbo.Rounding(0,CenO*NDS/100*KolF)
      where  IdDoc=@Iddoc and PrLogBKS=0 and ISNULL(SkidPost,0)=0 and ISNULL(NacPosr,0)=0*/
      -- íó è ïóñêàé ñêèäêà ïîñòàâùèêà ðàâíà 0, ýòî íàì íå ïîìåøàåò - ïîýòîìó çàêîìåíòèðîâàë!

      update DocString
      set SumNDS=dbo.Rounding(0,Round(ISNULL(CenPriobr,0)*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100)*(1-ISNULL(SkidPost,0)/100),2)*NDS/100*KolF)
      where  IdDoc=@Iddoc and PrLogBKS=1 
-- âñòàâêà äëÿ Ìîãèëžâà
      update DocString
      set SumNDSR=dbo.Rounding(0,ISNULL(Round(s.CenO*(1+ISNULL(s.NacPosr,0)/100)*(1+s.NalTrPost/100)*(1-ISNULL(s.SkidPost,0)/100),2)*(1+s.NalTr/100)*(1+s.NacRozn/100)*(1+s.NacObpit/100),0)*s.NDS/100*KolF)
      From DocString s
      inner join SprTovar t on s.pnt=t.pnt 
      where IdDoc=@IdDoc and ((s.NDS-Floor(s.NDS))=0 and s.IdPrizlog=5)  and s.pnt=t.pnt and (len(floor(s.Nacrozn))<3 
      or (len(floor(s.Nacrozn))>=3 and not Exists(Select * from tbZagotovki where KodGr=t.KodGr and KodPgr=t.KodPgr and KodVid=t.KodVid)))          --ðîçíè÷íûé  ÍÄÑ
--
   end
end
-- Äëÿ ðàñõîäîâ  
else
begin
   If @TipPredpr=25 
   begin

      if ((select TypeFieldN from tbOsnNastr where NameFieldN='Pr_SkidOv' and idPredpr=(Select Kodskl from Doccaption where iddoc=@Iddoc))=1) 
         update DocString
         set SumNDS=dbo.Rounding(0,Round(CenO*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100),2)*NDS/100*(KolF-isnull(KolOv,0)))
         where  IdDoc=@Iddoc  and  KolOv<>0 
      
      update DocString
      set SumNDS=dbo.Rounding(0,(Round(CenO*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100),2)-Round(CenO*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100),2)*ISNULL(SkidPokup,0)/100)
      *(Case when nds = 10 or nds = 20 then nds/(nds+100) else NDS/100 end)*KolF)
      where IdDoc=@IdDoc  and  ((NDS-Floor(NDS))<>0 Or (/*nds=10 and */idPrizLog=6 and PrLogBks<>1)) and idprizlog<>41
      
      update DocString
      set SumNDS=dbo.Rounding(0,dbo.Rounding(0,Round(CenO*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100),2)*(1-ISNULL(SkidPokup,0)/100))*NDS/100*KolF)
      where IdDoc=@IdDoc  and  ((NDS-Floor(NDS))=0 and idPrizLog=5)  and PrLogBks=0 and (kolov is null or kolov=0)
 
      update DocString
      set SumNds=dbo.Rounding(0,dbo.Rounding(0,Round(Ceno*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100),2)*(1-ISNULL(SkidPokup,0)/100))*Nds/100*Kolf)
      where IdDoc=@Iddoc and idPrizlog=41

      update DocString
      set sumnds=dbo.Rounding(0,(Round(Round(ceno*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100),2)*(1-ISNULL(SkidPokup,0)/100),2)
      -Round(Round(ceno*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100),2)*(1-SkidPokup/100)*nds/(nds+100),2))*kolf*nds/100) --???
      where IdDoc=@Iddoc and PrLogBks=1
   end


   If @TipPredpr<>25 
   begin
      if ((select TypeFieldN from tbOsnNastr where NameFieldN='Pr_SkidOv' and idPredpr=(Select Kodskl from Doccaption where iddoc=@Iddoc))=1)
        -- + îïò íàö è ñîö çí (ëåâ÷åíêî-àòàìàíîâà)
        begin
            update DocString
            set SumNDS=dbo.Rounding(0,dbo.Rounding(1,Round(CenO*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100),2)*(1+NacOpt/100))*NDS/100*(KolF-isnull(KolOv,0)))
            where  IdDoc=@Iddoc  and  KolOv<>0 AND PNT IN (SELECT PNT FROM sprTovar WHERE PNT IN (SELECT PNT FROM docString WHERE IdDoc=@IdDoc) AND ISNULL(idcolor,0) = 1)  
        
            update DocString
            set SumNDS=dbo.Rounding(0,dbo.Rounding(0,Round(CenO*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100),2)*(1+NacOpt/100))*NDS/100*(KolF-isnull(KolOv,0)))
            where  IdDoc=@Iddoc  and  KolOv<>0 AND PNT IN (SELECT PNT FROM sprTovar WHERE PNT IN (SELECT PNT FROM docString WHERE IdDoc=@IdDoc) AND ISNULL(idcolor,0) != 1)
        end
      update DocString
      -- äîáàâëåíî ñîö. çí îêð
      set SumNDS=dbo.Rounding(0,dbo.Rounding(1,Round(CenO*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100),2)*(1-ISNULL(SkidPokup,0)/100))*(Case 
                                                        when (/*nds=10 and */IdPrizLog=6) then nds/(nds+100)
                                                        else 
                                                        NDS/100
                                                        end)*KolF)
      where IdDoc=@IdDoc  and PrLogBKS=0 and (kolov is null or kolov=0) AND PNT IN (SELECT PNT FROM sprTovar WHERE PNT IN (SELECT PNT FROM docString WHERE IdDoc=@IdDoc) AND ISNULL(idcolor,0) = 1)  
      update DocString
      set SumNDS=dbo.Rounding(0,dbo.Rounding(0,Round(CenO*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100),2)*(1-ISNULL(SkidPokup,0)/100))*(Case 
                                                        when (/*nds=10 and */IdPrizLog=6) then nds/(nds+100)
                                                        else 
                                                        NDS/100
                                                        end)*KolF)
      where IdDoc=@IdDoc  and PrLogBKS=0 and (kolov is null or kolov=0) AND PNT IN (SELECT PNT FROM sprTovar WHERE PNT IN (SELECT PNT FROM docString WHERE IdDoc=@IdDoc) AND ISNULL(idcolor,0) != 1)  

      update DocString
      --set SumNds=dbo.Rounding(0,dbo.Rounding(0,Isnull(Ceno*(1-SkidPokup/100),0))*Nds/(nds+100)*Kolf)      -- ëîãîòèï
      set sumnds=dbo.Rounding(0,(Round(Round(ceno*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100),2)*(1-SkidPokup/100),2)
      -dbo.Rounding(0,Round(ceno*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100),2)*(1-SkidPokup/100)*nds/(nds+100)))*kolf*nds/100) -- ëîãîòèï
      where IdDoc=@Iddoc and PrLogBks=1 
   end 
   
   if @NameGrOper='Âîçâðàò ïîñðåäíèêó'
      update DocString
      set SumNDS=dbo.Rounding(0,dbo.Rounding(0,Round(CenO*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100),2))*NDS/100*KolF)
      where IdDoc=@IdDoc and (NDS-Floor(NDS))=0     --(NDS=10 or NDS=18 or NDS=0 )  
   else
   begin
      if @NastrSchCenPriobr = 0   -- ñ÷èòàòü âñå îò CenO
      begin
         if (select trpredpr from tbnastrpredpr)=0 
         begin


            --îêðóãëåíèå íäñ â ìåíüøóþ è àðèôìåòè÷åñêè äëÿ ñîö çíà÷ òîâàðà è íåò
            update DocString
            set SumNDS=dbo.Rounding(0,dbo.Rounding(1,Round(CenO*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100),2)*(1+ISNULL(NalTr,0)/100)*(1+NacOpt/100))*NDS/100*KolF)
            where IdDoc=@IdDoc and ((NDS-Floor(NDS))=0 and IdPrizlog=5) and SkidPoKup=0  and (KolOv is null or KolOv=0) AND PNT IN (SELECT PNT FROM sprTovar WHERE PNT IN (SELECT PNT FROM docString WHERE IdDoc=@IdDoc) AND ISNULL(idcolor,0) = 1)         --îïòîâûé ÍÄÑ
         
         update DocString
            set SumNDS=dbo.Rounding(0,dbo.Rounding(0,Round(CenO*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100),2)*(1+ISNULL(NalTr,0)/100)*(1+NacOpt/100))*NDS/100*KolF)
            where IdDoc=@IdDoc and ((NDS-Floor(NDS))=0 and IdPrizlog=5) and SkidPoKup=0  and (KolOv is null or KolOv=0) AND PNT IN (SELECT PNT FROM sprTovar WHERE PNT IN (SELECT PNT FROM docString WHERE IdDoc=@IdDoc) AND ISNULL(idcolor,0) != 1)         --îïòîâûé ÍÄÑ
         
         
         
         end
         else
         begin
         
            update DocString
            set SumNDS=dbo.Rounding(0,dbo.Rounding(1, ISNULL(Round(CenO*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100),2)*(1+NalTr/100)*(1+NacOpt/100),0))*KolF*NDS/100)
            where IdDoc=@IdDoc and ((NDS-Floor(NDS))=0 and IdPrizlog=5) and SkidPoKup=0 and (KolOv is null or KolOv=0) AND PNT IN (SELECT PNT FROM sprTovar WHERE PNT IN (SELECT PNT FROM docString WHERE IdDoc=@IdDoc) AND ISNULL(idcolor,0) = 1)       --îïòîâûé ÍÄÑ

            update DocString
            set SumNDS=dbo.Rounding(0,Round(ISNULL(Round(CenO*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100),2)*(1+NalTr/100)*(1+NacOpt/100),0),2)*KolF*NDS/100)
            where IdDoc=@IdDoc and ((NDS-Floor(NDS))=0 and IdPrizlog=5) and SkidPoKup=0 and (KolOv is null or KolOv=0) AND PNT IN (SELECT PNT FROM sprTovar WHERE PNT IN (SELECT PNT FROM docString WHERE IdDoc=@IdDoc) AND ISNULL(idcolor,0) != 1)       --îïòîâûé ÍÄÑ

         
         end
         
         if @NameGr='Øêîëà'
            update DocString
            set SumNDSR=dbo.Rounding(0,dbo.Rounding(0,s.CenO*(1+ISNULL(s.NacPosr,0)/100)*(1+s.NalTrPost/100))*s.NDS/100*KolF)
            From DocString s
            inner join SprTovar t on s.pnt=t.pnt 
            where IdDoc=@IdDoc and ((s.NDS-Floor(s.NDS))=0 and s.IdPrizlog=5)  and s.pnt=t.pnt and (len(floor(s.Nacrozn))<3 
            or (len(floor(s.Nacrozn))>=3 and not Exists(Select * from tbZagotovki where KodGr=t.KodGr and KodPgr=t.KodPgr and KodVid=t.KodVid)))          --ðîçíè÷íûé  ÍÄÑ
         else
         begin
            if ((select TypeFieldN from tbOsnNastr where NameFieldN='Pr_SkidOv' and idPredpr=(Select Kodskl from Doccaption where iddoc=@Iddoc))=1) 
               update DocString
               set SumNDSR=dbo.Rounding(0,dbo.Rounding(0,ISNULL(Round(s.CenO*(1+ISNULL(s.NacPosr,0)/100)*(1+s.NalTrPost/100),2)*(1+s.NalTr/100)*(1+s.NacRozn/100)*(1+s.NacObpit/100),0))*s.NDS/100*(KolF-isnull(KolOv,0)))
               From DocString s
               inner join SprTovar t on s.pnt=t.pnt 
               where IdDoc=@IdDoc and ((s.NDS-Floor(s.NDS))=0 and s.IdPrizlog=5)  and s.pnt=t.pnt and (len(floor(s.Nacrozn))<3 
               or (len(floor(s.Nacrozn))>=3 and not Exists(Select * from tbZagotovki where KodGr=t.KodGr and KodPgr=t.KodPgr and KodVid=t.KodVid)))          --ðîçíè÷íûé  ÍÄÑ
            else

               update DocString
               set SumNDSR=dbo.Rounding(0,Round(ISNULL(Round(s.CenO*(1+ISNULL(s.NacPosr,0)/100)*(1+s.NalTrPost/100),2)*(1+s.NalTr/100)*(1+s.NacRozn/100)*(1+s.NacObpit/100),0),2)*s.NDS/100*KolF)
               From DocString s
               inner join SprTovar t on s.pnt=t.pnt 
               where IdDoc=@IdDoc and ((s.NDS-Floor(s.NDS))=0 and s.IdPrizlog=5)  and s.pnt=t.pnt and (len(floor(s.Nacrozn))<3 
               or (len(floor(s.Nacrozn))>=3 and not Exists(Select * from tbZagotovki where KodGr=t.KodGr and KodPgr=t.KodPgr and KodVid=t.KodVid)))          --ðîçíè÷íûé  ÍÄÑ
         end
         -- ëîãîòèï ÁÊÑ
         update DocString
         set SumNDSR=0
         where IdDoc=@IdDoc and PrlogBKS=1

         -- Ìîëîäå÷íî
         if @NameGr='Øêîëà'
            update DocString
            set SumNDSR=dbo.Rounding(0,dbo.Rounding(0,CenO*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100))*NDS/100*KolF)
            where IdDoc=@IdDoc  and Nds=24 and IDprizlog=6 and len(floor(Nacrozn))<3 and ((Nacobpit<>0) or (Nacobpit is not null))  and PrlogBKS=0      
         else
            update DocString
            set SumNDSR= dbo.Rounding(0,dbo.Rounding(0,ISNULL(Round(CenO*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100),2)*(1+Naltr/100)*(1+NacRozn/100)*(1+NacObpit/100),0))*(NDS/(nds+100))*KolF)
            --where IdDoc=@IdDoc  and Nds=24 and IDprizlog=6 and len(floor(Nacrozn))<3 and ((Nacobpit<>0) or (Nacobpit is not null))   and PrlogBKS=0     
            where IdDoc=@IdDoc  and Nds=10 and IDprizlog=6 and len(floor(Nacrozn))<3 and ((Nacobpit<>0) or (Nacobpit is not null))   and PrlogBKS=0     

         if @NameGr='Øêîëà'
            update DocString
            set SumNDSR=dbo.Rounding(0,Round(CenO*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100),2)*NDS/100*KolF)
            where IdDoc=@IdDoc  and  IDprizlog=41        --- äîáàâèòü äëÿ ðàñ÷.ñòàâêè
         else
            update DocString
            set SumNDSR= dbo.Rounding(0,dbo.Rounding(0,ISNULL(Round(CenO*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100),2)*(1+Naltr/100)*(1+NacRozn/100)*(1+NacObpit/100),0))*(NDS/100)*KolF)
            where IdDoc=@IdDoc  and  IDprizlog=41        --- äîáàâèòü äëÿ ðàñ÷.ñòàâêè

         if @NameGr='Øêîëà'
            update DocString
            set SumNDSR=dbo.Rounding(0,dbo.Rounding(0,CenO*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100))*NDS/100*KolF)
            where IdDoc=@IdDoc and len(floor(Nacrozn))<3 and not(Nds=24) and IDprizlog=6 and ((Nacobpit<>0) or (Nacobpit is not null)) and PrlogBKS=0
         else
            update DocString
            set SumNDSR= dbo.Rounding(0,dbo.Rounding(0,Round(CenO*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100),2)*(1+ISNULL(Naltr,0)/100)*(1+ISNULL(NacRozn,0)/100)*(1+ISNULL(NacObpit,0)/100))*NDS/100*KolF)
            where IdDoc=@IdDoc and len(floor(Nacrozn))<3 and not(Nds=24) and IDprizlog=6 and ((Nacobpit<>0) or (Nacobpit is not null)) and PrlogBKS=0

        --ðàñ÷žò íäñ 20% â òîì ÷èñëå îò 13.01.22
        if @NameGr='Øêîëà'
            update DocString
            set SumNDSR=dbo.Rounding(0,dbo.Rounding(0,CenO*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100))*NDS/100*KolF)
            where IdDoc=@IdDoc and len(floor(Nacrozn))<3 and Nds=20 and IDprizlog=6 and ((Nacobpit<>0) or (Nacobpit is not null)) and PrlogBKS=0
         else
            update DocString
            set SumNDSR= dbo.Rounding(0,dbo.Rounding(0,Round(CenO*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100),2)*(1+ISNULL(Naltr,0)/100)*(1+ISNULL(NacRozn,0)/100)*(1+ISNULL(NacObpit,0)/100))*NDS/(100 + NDS)*KolF)
            where IdDoc=@IdDoc and len(floor(Nacrozn))<3 and Nds=20 and IDprizlog=6 and ((Nacobpit<>0) or (Nacobpit is not null)) and PrlogBKS=0

---------------------------
         if @NameGr='Øêîëà'
            update DocString
            set SumNDSR=dbo.Rounding(0,dbo.Rounding(0,s.CenO*(1+ISNULL(s.NacPosr,0)/100)*(1+s.NalTrPost/100))*s.NDS/100*KolF)
            From DocString s inner join SprTovar t on s.pnt=t.pnt 
            where IdDoc=@IdDoc  and s.pnt=t.pnt and ((s.NDS-Floor(s.NDS))=0 and s.IdPrizlog=5) and len(floor(Nacrozn))>=3  and  Exists(Select * from tbZagotovki where KodGr=t.KodGr and KodPgr=t.KodPgr and KodVid=t.KodVid)
         else
            update DocString
            set SumNDSR=dbo.Rounding(0,dbo.Rounding(0,ISNULL((Round(s.CenO*(1+ISNULL(s.NacPosr,0)/100)*(1+s.NalTrPost/100),2)*(1+ISNULL(s.NalTr,0)/100)+s.NacRozn)*(1+s.NacObpit/100),0))*s.NDS/100*KolF)
            From DocString s inner join SprTovar t on s.pnt=t.pnt 
            where IdDoc=@IdDoc  and s.pnt=t.pnt and ((s.NDS-Floor(s.NDS))=0 and s.IdPrizlog=5) and len(floor(Nacrozn))>=3  and  Exists(Select * from tbZagotovki where KodGr=t.KodGr and KodPgr=t.KodPgr and KodVid=t.KodVid)


         If @TipPredpr=25  
            update DocString
            --set SumNDSR=Round( ISNULL(((CenO*KolF*SkidPost/100)-(CenO*KolF*SkidPokup/100))*(Case nds
            set SumNDSR=dbo.Rounding(0,dbo.Rounding(0,CenO*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100))*(Case nds
                                                        when 10 then nds/(nds+100)
                                                        else 
                                                        NDS/100
                                                        end)*KolF)
            where IdDoc=@IdDoc and ((NDS-Floor(NDS))<>0  or (nds=10 and idPrizLog=6)) and ((Nacobpit=0) or (Nacobpit is null)) and (IdPrizlog<>41) and PrlogBKS=0
         else 
            update DocString
            set SumNDSR=dbo.Rounding(0,dbo.Rounding(0,ISNULL(Round(CenO*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100),2)*(1-SkidPokup/100),0))*(Case 
                                                       when (nds=10 and IdPrizLog=6) then nds/(nds+100)
                                                       else 
                                                          NDS/100
                                                       end)*KolF)
            where IdDoc=@IdDoc and ((NDS-Floor(NDS))<>0  or (idPrizLog=41) or (nds=10 and idPrizLog=6)) and ((Nacobpit=0) or (Nacobpit is null)) and PrlogBKS=0
 
      end
      else       -- ñ÷èòàòü îò  CenPriobr
      begin
            --++ ñîö çíà÷ îêðóãëåíèå
            --îïòîâûé ÍÄÑ (ÊÇÏ)
         update DocString
         set SumNDS=dbo.Rounding(0,dbo.Rounding(1,ISNULL(Round(CenPriobr*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100),2)*(1+NalTr/100)*(1+NacOpt/100)*(1-SkidPokup/100),0))*NDS/100*(KolF-isnull(KolOv * @Pr_SkidOv,0)))
         where IdDoc=@IdDoc and (NDS-Floor(NDS))=0  and  IdPrizLog=5 AND PNT IN (SELECT PNT FROM sprTovar WHERE PNT IN (SELECT PNT FROM docString WHERE IdDoc=@IdDoc) AND ISNULL(idcolor,0) = 1)      
         
         update DocString
         set SumNDS=dbo.Rounding(0,dbo.Rounding(0,ISNULL(Round(CenPriobr*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100),2)*(1+NalTr/100)*(1+NacOpt/100)*(1-SkidPokup/100),0))*NDS/100*(KolF-isnull(KolOv * @Pr_SkidOv,0)))
         where IdDoc=@IdDoc and (NDS-Floor(NDS))=0  and  IdPrizLog=5 AND PNT IN (SELECT PNT FROM sprTovar WHERE PNT IN (SELECT PNT FROM docString WHERE IdDoc=@IdDoc) AND ISNULL(idcolor,0) != 1)


      ---- Õëåá
         update DocString
         set SumNDS=dbo.Rounding(0,dbo.Rounding(0,ISNULL(Round(CenPriobr*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100),2)*(1+NalTr/100)*(1+NacOpt/100)*(1-SkidPokup/100),0))*NDS/100*KolF)
         where IdDoc=@IdDoc and (NDS-Floor(NDS))<>0  and  IdPrizLog=6      --Õëåá
      -------------------
         if @NameGr='Øêîëà'
            update DocString
            set SumNDSR=dbo.Rounding(0,dbo.Rounding(0,ISNULL(s.CenPriobr,0)*(1+ISNULL(s.NacPosr,0)/100)*(1+s.NalTrPost/100))*s.NDS/100*KolF)
            From DocString s inner join SprTovar t on s.pnt=t.pnt 
            where IdDoc=@IdDoc and ((s.NDS-Floor(s.NDS))=0 and s.IdPrizlog=5)  and s.pnt=t.pnt and (len(floor(s.Nacrozn))<3 
            or (len(floor(s.Nacrozn))>=3 and not Exists(Select * from tbZagotovki where KodGr=t.KodGr and KodPgr=t.KodPgr and KodVid=t.KodVid)))          --ðîçíè÷íûé  ÍÄÑ
         ELSE
            update DocString
            --set SumNDSR=dbo.Rounding(0,dbo.Rounding(0,ISNULL(s.CenPriobr*(1+s.NalTr/100)*(1+s.NacRozn/100)*(1+s.NacObpit/100),0))*s.NDS/100*KolF)
            set SumNDSR=dbo.Rounding(0,dbo.Rounding(0,ISNULL(Round(s.CenPriobr*(1+ISNULL(s.NacPosr,0)/100)*(1+s.NalTrPost/100),2)*(1+s.NalTr/100)*(1+s.NacRozn/100)*(1+s.NacObpit/100),0))*s.NDS/100*(KolF-isnull(KolOv,0)))
            From DocString s inner join SprTovar t on s.pnt=t.pnt 
            where IdDoc=@IdDoc and ((s.NDS-Floor(s.NDS))=0 and s.IdPrizlog=5)  and s.pnt=t.pnt and (len(floor(s.Nacrozn))<3 
            or (len(floor(s.Nacrozn))>=3 and not Exists(Select * from tbZagotovki where KodGr=t.KodGr and KodPgr=t.KodPgr and KodVid=t.KodVid)))          --ðîçíè÷íûé  ÍÄÑ

         if @NameGr='Øêîëà'  
            update DocString
            set SumNDSR=dbo.Rounding(0,dbo.Rounding(0,ISNULL(s.CenPriobr,0)*(1+ISNULL(s.NacPosr,0)/100)*(1+s.NalTrPost/100))*s.NDS/100*KolF)
            From DocString s inner join SprTovar t on s.pnt=t.pnt 
            where IdDoc=@IdDoc  and s.pnt=t.pnt and ((s.NDS-Floor(s.NDS))=0 and s.IdPrizlog=5) and len(floor(Nacrozn))>=3  and  Exists(Select * from tbZagotovki where KodGr=t.KodGr and KodPgr=t.KodPgr and KodVid=t.KodVid)
         else
            update DocString
            --555 set SumNDSR=dbo.Rounding(0,dbo.Rounding(0,ISNULL((s.CenPriobr*(1+s.NalTr/100)+s.NacRozn)*(1+s.NacObpit/100),0))*s.NDS/100*KolF)
            set SumNDSR=dbo.Rounding(0,dbo.Rounding(0,ISNULL((Round(s.CenPriobr*(1+ISNULL(s.NacPosr,0)/100)*(1+s.NalTrPost/100),2)*(1+s.NalTr/100)+s.NacRozn)*(1+s.NacObpit/100),0))*s.NDS/100*(KolF-isnull(KolOv,0)))
            From DocString s inner join SprTovar t on s.pnt=t.pnt 
            where IdDoc=@IdDoc  and s.pnt=t.pnt and ((s.NDS-Floor(s.NDS))=0 and s.IdPrizlog=5) and len(floor(Nacrozn))>=3  and  Exists(Select * from tbZagotovki where KodGr=t.KodGr and KodPgr=t.KodPgr and KodVid=t.KodVid)

         update DocString
         set SumNDSR=dbo.Rounding(0,dbo.Rounding(0,ISNULL(Round(CenPriobr*(1+ISNULL(NacPosr,0)/100)*(1+NalTrPost/100),2)*(1-SkidPokup/100),0))*(Case nds
                                                        when 24 then nds/(nds+100)
                                                        else 
                                                        NDS/100
                                                        end)*KolF)
         where IdDoc=@IdDoc and ((NDS-Floor(NDS))<>0  or (Nds=24 and IdPrizlog=6))  
         
 
      end
   end
end

Update DocString set Sumnds=isnull(SumNds,0) where IdDoc=@IdDoc
Update DocString set SumNdsr=isnull(Sumndsr,0) where IdDoc=@IdDoc





