home *** CD-ROM | disk | FTP | other *** search
/ 95.86.62.111 / 95.86.62.111.tar / 95.86.62.111 / wtrg.rar / wtrg / sp_AnalMatDok.sql < prev    next >
Text File  |  2009-02-24  |  13KB  |  278 lines

  1. SET QUOTED_IDENTIFIER ON 
  2. GO
  3. SET ANSI_NULLS ON 
  4. GO
  5.  
  6.  
  7.  
  8. ALTER                        PROCEDURE sp_Anal_MatDok
  9.     @Sifra_Nal Smallint,
  10.     @Sifra_Dok Smallint,
  11.     @Sifra_OE Smallint,
  12.     @KoiOE Varchar(400),
  13.     @Sifra_Prim Smallint,
  14.     @KoiOE_Prim char(6) = Null,
  15.     @Broj_Nal_Od Int,
  16.     @Broj_Nal_Do Int,
  17.     @Broj_Dok_Od Int,
  18.     @Broj_Dok_Do Int,
  19.     @Datum_Dok_Od Smalldatetime,
  20.     @Datum_Dok_Do Smalldatetime,
  21.     @Datum_Nal_Od Smalldatetime,
  22.     @Datum_Nal_Do Smalldatetime,
  23.     @Sifra_Kup Char(6),
  24.     @Sifra_Za Char(1),
  25.     @VlIzl Char(1),
  26.     @PecFisc char(1) = Null,
  27.     @Sifra_Nivo Char(2) = Null,
  28.     @KFSifra_Nivo Char(1) = Null,
  29.     @KFSifra_Prim Char(1) = Null,
  30.     @Sifra_Pat    smallint = Null,
  31.     @Sifra_Mest    int = Null,
  32.     @Uces_Od    decimal(6,2) = Null,
  33.     @Uces_Do    decimal(6,2) = Null,
  34.     @Sifra_Drg    smallint = Null,
  35.     @Lokacija    varchar(10) = Null,
  36.     @NemaKomint    char(1) = Null,
  37.     @NemaPatnik    char(1) = Null,
  38.     @Sifra_Oper    varchar(20) = Null,
  39.     @Sifra_Obj    smallint = Null,
  40.     @PoKojDatum    char(1) = 'D',     -- D - Datum_Dok,      V - Datum_Vnes
  41.     @Koi_Gradovi    varchar(300) = Null,
  42.     @Kto        char(6) = Null,
  43.     @BezOdbRabat    char(2) = 'NN',    -- DD - Bez odbien rabat so Danok    DN - Bez odbien rabat bez Danok
  44.     @Sifra_Div    smallint = Null,
  45.     @NemaDivizija    char(1) = Null,
  46.     @PoGradovi    char(1) = 'N',
  47.     @Sifra_Prev    char(6) = Null,
  48.     @Spremil    varchar(5) = Null,
  49.     @RezVoTabela    char(1) = 'N',
  50.     @SoTezini    char(1) = 'N',
  51.     @KDrugo1        smallint = NULL, 
  52.     @KDrugo2        smallint = NULL,
  53.     @KDrugo3        smallint = NULL,
  54.     @KDrugo4        smallint = NULL,
  55.     @KDrugo5        smallint = NULL,
  56.     @KDrugo6        smallint = NULL,
  57.     @KDrugo7        smallint = NULL
  58. AS
  59.     
  60.     
  61.     If @PoKojDatum = 'V' Or @PecFisc = 'D'
  62.             If @Datum_Dok_Do Is Not Null
  63.         Set @Datum_Dok_Do = @Datum_Dok_Do + 1
  64.        Declare @SSQL Varchar(8000)
  65.     If @RezVoTabela = 'D'
  66.     Begin
  67.         Set @SSQL = 'SELECT D.Sifra_OE, D.Sifra_Nal, D.Broj_Nal, D.Datum_Dok, D.VlIzl, D.Toc200, D.MagVr, D.MagVrDan, D.Danok1, D.Danok2 
  68.                 FROM DOKR D
  69.                 INNER JOIN TipDok TD ON D.Sifra_Dok=TD.Sifra_Dok
  70.                 LEFT OUTER JOIN Komint K ON D.Sifra_Kup=K.Sifra_Kup
  71.                 INNER JOIN Orged O ON D.Sifra_OE=O.Sifra_OE
  72.                 LEFT OUTER JOIN Nalozi N ON TD.Sifra_Nal=N.Sifra_Nal AND D.Broj_Nal=N.Broj_Nal
  73.                 LEFT OUTER JOIN Orged OP ON D.Sifra_Prim=OP.Sifra_OE         
  74.                 LEFT OUTER JOIN KObjekti KO ON KO.Sifra_Kup=D.Sifra_Kup and KO.Sifra_Obj=D.Sifra_Obj '
  75.     End
  76.     Else
  77.     Begin
  78.         SET @SSQL = 'SELECT D.Sifra_OE, D.Sifra_Dok, D.Broj_Dok, D.Sifra_Prim, D.VlIzl, D.Sifra_Za, D.Sifra_Nal, D.Broj_Nal, D.Identif_Br, D.Sifra_Kup, D.Sifra_Obj, D.Datum_Dok, D.Rok, 
  79.                     DateADD(day, D.Rok, D.Datum_Dok)DatumDosp, D.Kto, D.Toc200, D.MagVr, D.MagVrDan, D.Marza, D.Danok1, D.Danok2, D.PDanok1, D.PDanok2, D.PTrosok, D.DanDokCena, 
  80.                     D.Dat_Pec_Fisc, 
  81.                     Sum(S.Kolic*S.NabCena) NabVr, Sum(S.Kolic*S.MagCena) MagVrednost, sum(S.DokCena*S.Kolic) PoDokCena, TD.ImeDok,
  82.                     K.ImeKup, K.SMesto,
  83.                     O.ImeOrg As IORG, OP.ImeOrg As IORG_Prima, KO.ImeObj, 
  84.                     Sum(S.Kolic*S.TrsCena) TrsVrednost, D.Plat_PerDan, '
  85.         If @BezOdbRabat = 'DD'
  86.             Set @SSQL = @SSQL + ' Sum(Case When S.VlIzl = ''I'' Then (S.Kolic*dbo.fn_VratiCena(S.DokCena, S.Posn, S.DanDokCena, ''D'')) Else 0 End) VrednBezRabat, '
  87.         Else If @BezOdbRabat = 'DN'
  88.             Set @SSQL = @SSQL + ' Sum(Case When S.VlIzl = ''I'' Then (S.Kolic*dbo.fn_VratiCena(S.DokCena, S.Posn, S.DanDokCena, ''N'')) Else 0 End) VrednBezRabat, '
  89.         Else 
  90.             Set @SSQL = @SSQL + ' Null as VrednBezRabat, '
  91.         If @PoGradovi = 'D'
  92.             Set @SSQL = @SSQL + ' (Case When KO.Sifra_Grad Is Not Null Then KO.Sifra_Grad Else K.Sifra_Grad End) Sifra_Grad, G.ImeGrad, '
  93.         Else
  94.             Set @SSQL = @SSQL + ' Null as Sifra_Grad, Null as ImeGrad, '
  95.         If @SoTezini = 'D'
  96.             Set @SSQL = @SSQL + ' Sum(S.Kolic*A.Tezina/1000) Tezina '
  97.         Else 
  98.             Set @SSQL = @SSQL + ' Null as  Tezina '
  99.         Set @SSQL = @SSQL + ' FROM DOKR D
  100.                      Left Outer Join Stavr S On D.DokrID=S.DokrID    
  101.                      INNER JOIN TipDok TD ON D.Sifra_Dok=TD.Sifra_Dok
  102.                      LEFT OUTER JOIN Komint K ON D.Sifra_Kup=K.Sifra_Kup
  103.                      INNER JOIN Orged O ON D.Sifra_OE=O.Sifra_OE
  104.                      LEFT OUTER JOIN Nalozi N ON TD.Sifra_Nal=N.Sifra_Nal AND D.Broj_Nal=N.Broj_Nal
  105.                      LEFT OUTER JOIN Orged OP ON D.Sifra_Prim=OP.Sifra_OE         
  106.                      LEFT OUTER JOIN KObjekti KO ON KO.Sifra_Kup=D.Sifra_Kup and KO.Sifra_Obj=D.Sifra_Obj '
  107.         If @Sifra_Drg Is Not Null Or @Lokacija Is Not Null Or @SoTezini = 'D'
  108.             Set @SSQL = @SSQL + ' Left Outer Join Katart A On A.Sifra_art=S.Sifra_art '
  109.         If @PoGradovi = 'D'
  110.             Set @SSQL = @SSQL + ' Left Outer Join Grad G On G.Sifra_Grad = (Case When KO.Sifra_Grad Is Not Null Then KO.Sifra_Grad Else K.Sifra_Grad End) '
  111.     End
  112.     If @Sifra_Nal Is Null
  113.         SET @SSQL = @SSQL + 'WHERE 1=1     '
  114.     Else
  115.         SET @SSQL = @SSQL + 'WHERE D.Sifra_Nal=''' + Cast(@Sifra_Nal As Varchar(10)) + ''' '
  116.     If @KFSifra_Nivo Is Null
  117.         Begin
  118.             If @Sifra_Nivo Is Not Null
  119.                 Set @SSQL = @SSQL + 'And D.Sifra_Nivo=''' + @Sifra_Nivo + ''' '
  120.         End
  121.     Else If @KFSifra_Nivo='D' And @Sifra_Nivo Is Not Null
  122.         Set @SSQL = @SSQL + 'And (D.Sifra_Nivo<>''' + @Sifra_Nivo + ''' Or D.Sifra_Nivo Is Null) '
  123.     If @PecFisc = 'D'
  124.         SET @SSQL = @SSQL + ' AND D.Pec_Fisc > 0 '
  125.     Else If @PecFisc = 'N'
  126.         SET @SSQL = @SSQL + ' AND (D.Pec_Fisc = 0 or D.Pec_Fisc is Null) '
  127.     If @Sifra_Dok Is NOT NULL
  128.         SET @SSQL = @SSQL + 'AND D.Sifra_Dok=''' + Cast(@Sifra_Dok As Varchar(10)) + ''' '
  129.        If @Sifra_OE Is NOT Null
  130.               SET @SSQL = @SSQL + 'AND D.Sifra_OE=' + Cast(@Sifra_OE As Varchar(6)) + ' '
  131.        If @KoiOE Is NOT Null
  132.               SET @SSQL = @SSQL + 'AND D.Sifra_OE In (' + @KoiOE + ') '
  133.     If @KFSifra_Prim Is Null
  134.         Begin
  135.             If @Sifra_Prim Is Not Null
  136.                 SET @SSQL = @SSQL + 'AND D.Sifra_Prim=' + Cast(@Sifra_Prim As Varchar(6)) + ' '
  137.         End
  138.     Else If @KFSifra_Prim='D' And @Sifra_Prim Is Not Null
  139.         Set @SSQL = @SSQL + 'And (D.Sifra_Prim<>' + Cast(@Sifra_Prim As Varchar(6)) + ' Or D.Sifra_Prim Is Null) '
  140.     If @KoiOE_Prim Is Not Null
  141.         Set @SSQL = @SSQL + 'And D.Sifra_Prim In (Select Sifra_OE From SGrOrg Where Sif_GrOrg=''' + @KoiOE_Prim + ''') '
  142.     If @Sifra_Pat IS NOT NULL
  143.         SET @SSQL = @SSQL + ' AND D.Sifra_Pat = ' + Cast(@Sifra_Pat as varchar(5)) + ' '
  144. -- Ima kontrola vo podgotovkata ako se pusti filterot @NemaPatnik da ne se pusta filterot @Sifra_pat
  145.     If @NemaPatnik = 'D'
  146.         SET @SSQL = @SSQL + ' AND D.Sifra_Pat is Null and D.Sifra_za in (1, 2) '
  147.     If @Broj_Nal_Od Is NOT Null
  148.            SET @SSQL = @SSQL + 'AND D.Broj_Nal>=''' + Cast(@Broj_Nal_Od As Varchar(35)) + ''' '
  149.        If @Broj_Nal_Do Is NOT Null
  150.          SET @SSQL = @SSQL + 'AND D.Broj_Nal<=''' + Cast(@Broj_Nal_Do As Varchar(35)) + ''' '
  151.     If @Broj_Dok_Od Is NOT Null
  152.            SET @SSQL = @SSQL + 'AND D.Broj_Dok>=''' + Cast(@Broj_Dok_Od As Varchar(35)) + ''' '
  153.        If @Broj_Dok_Do Is NOT Null
  154.          SET @SSQL = @SSQL + 'AND D.Broj_Dok<=''' + Cast(@Broj_Dok_Do As Varchar(35)) + ''' '
  155.     If @PecFisc = 'D'
  156.          Begin
  157.         If @Datum_Dok_Od Is NOT Null
  158.             SET @SSQL = @SSQL + 'AND D.Dat_Pec_Fisc>=''' + Cast(@Datum_Dok_Od As Varchar(35)) + ''' '
  159.            If @Datum_Dok_Do Is NOT Null
  160.              SET @SSQL = @SSQL + 'AND D.Dat_Pec_Fisc<''' + Cast(@Datum_Dok_Do As Varchar(35)) + ''' '
  161.          End
  162.     Else
  163.          Begin
  164.         If @PoKojDatum = 'V'
  165.               Begin
  166.             If @Datum_Dok_Od Is NOT Null                SET @SSQL = @SSQL + 'AND D.Datum_Vnes >= ''' + Cast(@Datum_Dok_Od As Varchar(35)) + ''' '
  167.             If @Datum_Dok_Do Is NOT Null
  168.                  SET @SSQL = @SSQL + 'AND D.Datum_Vnes < ''' + Cast(@Datum_Dok_Do As Varchar(35)) + ''' '
  169.               End
  170.         Else
  171.               Begin
  172.             If @Datum_Dok_Od Is NOT Null
  173.                 SET @SSQL = @SSQL + 'AND D.Datum_Dok>=''' + Cast(@Datum_Dok_Od As Varchar(35)) + ''' '
  174.                If @Datum_Dok_Do Is NOT Null
  175.                  SET @SSQL = @SSQL + 'AND D.Datum_Dok<=''' + Cast(@Datum_Dok_Do As Varchar(35)) + ''' '
  176.               End
  177.          End
  178.     If @Datum_Nal_Od Is NOT Null
  179.            SET @SSQL = @SSQL + 'AND N.Datum_Nal>=''' + Cast(@Datum_Nal_Od As Varchar(35)) + ''' '
  180.        If @Datum_Nal_Do Is NOT Null
  181.          SET @SSQL = @SSQL + 'AND N.Datum_Nal<=''' + Cast(@Datum_Nal_Do As Varchar(35)) + ''' '
  182.     If @Sifra_Kup Is NOT Null
  183.         SET @SSQL = @SSQL + 'AND D.Sifra_Kup=''' + Cast(@Sifra_Kup As Varchar(35))+ ''' '
  184. -- Ima kontrola vo podgotovkata ako se pusti filterot @NemaKomint da ne se pusta filterot @Sifra_Kup
  185.     If @NemaKomint = 'D'
  186.         SET @SSQL = @SSQL + 'AND D.Sifra_Kup Is Null and D.Sifra_za in (1, 2) ' 
  187.     If @Sifra_Div IS NOT NULL
  188.         SET @SSQL = @SSQL + ' AND D.Sifra_Div = ' + Cast(@Sifra_Div as varchar(5)) + ' '
  189. -- Ima kontrola vo podgotovkata ako se pusti filterot @NemaDivizija da ne se pusta filterot @Sifra_Div
  190.     If @NemaDivizija = 'D'
  191.         SET @SSQL = @SSQL + 'AND D.Sifra_Div Is Null ' 
  192.        If @Sifra_Obj Is NOT Null
  193.               SET @SSQL = @SSQL + 'AND D.Sifra_Obj=' + Cast(@Sifra_Obj As Varchar(6)) + ' '
  194.     If @Sifra_Za Is NOT Null
  195.         SET @SSQL = @SSQL + 'AND D.Sifra_Za=''' + Cast(@Sifra_Za As Varchar(35))+ ''' '
  196.     If @VlIzl Is NOT Null
  197.         SET @SSQL = @SSQL + 'AND D.VlIzl=''' + Cast(@VlIzl As Varchar(5))+ ''' '
  198.        If @Sifra_Mest Is NOT Null
  199.               SET @SSQL = @SSQL + 'AND D.Sifra_Mest=''' + Cast(@Sifra_Mest As Varchar(10)) + ''' '
  200.        If @Uces_Od Is NOT Null
  201.               SET @SSQL = @SSQL + 'AND S.Uces >=''' + Cast(@Uces_Od As Varchar(10)) + ''' '
  202.        If @Uces_Do Is NOT Null
  203.               SET @SSQL = @SSQL + 'AND S.Uces <=''' + Cast(@Uces_Do As Varchar(10)) + ''' '
  204.        If @Sifra_Drg Is NOT Null
  205.               SET @SSQL = @SSQL + 'AND A.Sifra_Drg =''' + Cast(@Sifra_Drg As Varchar(10)) + ''' '
  206.        If @Lokacija IS NOT NULL
  207.               SET @SSQL=@SSQL+'AND (A.Lokacija='''+lTrim(rtrim(@Lokacija))+''') '
  208.        If @Sifra_Oper IS NOT NULL
  209.               SET @SSQL=@SSQL+'AND D.Sifra_Oper=''' + @Sifra_Oper + ''' '
  210.        If @Kto IS NOT NULL
  211.               SET @SSQL=@SSQL+'AND D.Kto=''' + @Kto + ''' '
  212.        If @Sifra_Prev IS NOT NULL
  213.               SET @SSQL=@SSQL+'AND D.Sifra_Prev=''' + @Sifra_Prev + ''' '
  214.        If @Spremil IS NOT NULL
  215.               SET @SSQL=@SSQL+'AND D.Spremil=''' + @Spremil + ''' '
  216.     If @Koi_Gradovi Is Not NULL    
  217.         Begin
  218.             Set @SSQL = @SSQL + ' And ((KO.Sifra_Grad Is Not Null And KO.Sifra_Grad In (' + @Koi_Gradovi + ')) 
  219.             OR ( KO.Sifra_Grad Is Null and K.Sifra_Grad In ( ' + @Koi_Gradovi + '))) '     
  220.         End
  221.     If @KDrugo1 Is NOT NULL
  222.         Set @SSQL = @SSQL + ' And ((KO.KDrugo1 Is Not Null And KO.KDrugo1 = ' + Cast(@KDrugo1 As Varchar(6)) + ')
  223.               Or (KO.KDrugo1 Is Null And K.KDrugo1 = ' + Cast(@KDrugo1 As Varchar(6)) + ')) '
  224.     If @KDrugo2 Is NOT NULL
  225.         Set @SSQL = @SSQL + ' And ((KO.KDrugo2 Is Not Null And KO.KDrugo2 = ' + Cast(@KDrugo2 As Varchar(6)) + ')
  226.               Or (KO.KDrugo2 Is Null And K.KDrugo2 = ' + Cast(@KDrugo2 As Varchar(6)) + ')) '
  227.     If @KDrugo3 Is NOT NULL
  228.         Set @SSQL = @SSQL + ' And ((KO.KDrugo3 Is Not Null And KO.KDrugo3 = ' + Cast(@KDrugo3 As Varchar(6)) + ')
  229.               Or (KO.KDrugo3 Is Null And K.KDrugo3 = ' + Cast(@KDrugo3 As Varchar(6)) + ')) '
  230.     If @KDrugo4 Is NOT NULL
  231.         Set @SSQL = @SSQL + ' And ((KO.KDrugo4 Is Not Null And KO.KDrugo4 = ' + Cast(@KDrugo4 As Varchar(6)) + ')
  232.               Or (KO.KDrugo4 Is Null And K.KDrugo1 = ' + Cast(@KDrugo4 As Varchar(6)) + ')) '
  233.     If @KDrugo5 Is NOT NULL
  234.         Set @SSQL = @SSQL + ' And ((KO.KDrugo5 Is Not Null And KO.KDrugo5 = ' + Cast(@KDrugo5 As Varchar(6)) + ')
  235.               Or (KO.KDrugo5 Is Null And K.KDrugo5 = ' + Cast(@KDrugo5 As Varchar(6)) + ')) '
  236.     If @KDrugo6 Is NOT NULL
  237.         Set @SSQL = @SSQL + ' And ((KO.KDrugo6 Is Not Null And KO.KDrugo6 = ' + Cast(@KDrugo6 As Varchar(6)) + ')
  238.               Or (KO.KDrugo6 Is Null And K.KDrugo6 = ' + Cast(@KDrugo6 As Varchar(6)) + ')) '
  239.     If @KDrugo7 Is NOT NULL
  240.         Set @SSQL = @SSQL + ' And ((KO.KDrugo7 Is Not Null And KO.KDrugo7 = ' + Cast(@KDrugo7 As Varchar(6)) + ')
  241.               Or (KO.KDrugo7 Is Null And K.KDrugo7 = ' + Cast(@KDrugo7 As Varchar(6)) + ')) '
  242.  
  243.     If @RezVoTabela <> 'D' Or @RezVoTabela Is Null
  244.     Begin
  245.         Set @SSQL = @SSQL + 'Group By D.Sifra_OE, D.Sifra_Dok, D.Broj_Dok, D.Sifra_Prim, D.VlIzl, D.Sifra_Za, D.Sifra_Nal, D.Broj_Nal, D.Identif_Br, D.Sifra_Kup, D.Sifra_Obj, 
  246.                     D.Datum_Dok, D.Rok, D.Kto, D.Toc200, D.MagVr, D.MagVrDan, D.Marza, D.Danok1, D.Danok2, D.PDanok1, D.PDanok2, D.PTrosok, D.DanDokCena, 
  247.                     D.Dat_Pec_Fisc, TD.ImeDok, K.ImeKup, K.SMesto, O.ImeOrg, OP.ImeOrg, KO.ImeObj, D.Plat_PerDan '
  248.         If @PoGradovi = 'D'
  249.             Set @SSQL = @SSQL + ', (Case When KO.Sifra_Grad Is Not Null Then KO.Sifra_Grad Else K.Sifra_Grad End), G.ImeGrad '
  250.     End
  251.     If @RezVoTabela = 'D'
  252.     Begin
  253.         Create Table ##AMD
  254.         (
  255.          Sifra_OE    smallint, 
  256.          Sifra_Nal    smallint,
  257.          Broj_Nal    int, 
  258.          Datum_Dok    smalldatetime,
  259.          VlIzl        char(1), 
  260.          Toc200    decimal(18,6), 
  261.          MagVr        decimal(18,6), 
  262.          MagVrDan    decimal(18,6), 
  263.          Danok1    decimal(18,6), 
  264.          Danok2    decimal(18,6)
  265.         ) 
  266.         Insert Into ##AMD Exec(@SSQL)
  267.     End
  268.     Else
  269.         EXEC(@SSQL)
  270.  
  271.  
  272. GO
  273. SET QUOTED_IDENTIFIER OFF 
  274. GO
  275. SET ANSI_NULLS ON 
  276. GO
  277.  
  278.