Guest User

Untitled

a guest
Jan 12th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 4.08 KB | None | 0 0
  1. SET QUOTED_IDENTIFIER OFF
  2. GO
  3. SET ANSI_NULLS OFF
  4. GO
  5.  
  6.  
  7. ALTER   PROCEDURE [dbo].[fcalc_perenos]
  8. @data INT, @pr SMALLINT
  9. AS
  10. BEGIN
  11.     /*
  12.     * признак для переноса фактической калькуляции
  13.     * на приход @pr = 1
  14.     * на расход @pr = 2
  15.     * причем для прихода в таблицу приходов и нетовара программы добавляется просто "хвост" из готовой калькуляции
  16.     * а для расхода высчитывается новая таблица. в программе она не редактируется а нужна для построения отчета текстовой печати
  17.     * */
  18.     IF @pr = 1
  19.     begin
  20.         update fcalc_prihod_netovar
  21.         set fcalc_prihod_netovar.hoz = fcalc_kalk.hoz_rashod, fcalc_prihod_netovar.prz = fcalc_kalk.proiz_rashod,
  22.         fcalc_prihod_netovar.brak = fcalc_kalk.brak, fcalc_prihod_netovar.in_fond = fcalc_kalk.in_fond,
  23.         fcalc_prihod_netovar.kom_rash = fcalc_kalk.kom_rash,  fcalc_prihod_netovar.proch_rash = fcalc_kalk.proch,
  24.         fcalc_prihod_netovar.priznak = 1, fcalc_prihod_netovar.seb =
  25.         ( isnull(fcalc_prihod_netovar.mat, 0) + isnull(fcalc_prihod_netovar.tzr_mat,0)  + isnull(fcalc_prihod_netovar.pki,0) + isnull(fcalc_prihod_netovar.tzr_pki,0) + isnull(fcalc_prihod_netovar.zp,0) + isnull(fcalc_prihod_netovar.dop_zp,0) + isnull(fcalc_prihod_netovar.otch,0)
  26.         + isnull(fcalc_kalk.hoz_rashod,0) + isnull(fcalc_kalk.proiz_rashod,0) + isnull(fcalc_kalk.brak,0) + isnull(fcalc_kalk.in_fond,0) /*+ isnull(fcalc_kalk.kom_rash,0) */+ isnull(fcalc_kalk.proch,0))
  27.        
  28.         from fcalc_prihod_netovar
  29.         inner join fcalc_kalk  /*шпз 2040 нет в фактической калькуляции но он учитывается в НЗП*/
  30.         on ((fcalc_prihod_netovar.dt = @data) AND (fcalc_prihod_netovar.dt = fcalc_kalk.dt) AND (fcalc_prihod_netovar.shpz = fcalc_kalk.shpz)  AND (fcalc_prihod_netovar.priznak = 1))
  31.     END
  32.     IF @pr = 2
  33.     BEGIN
  34.         DELETE FROM fcalc_rashod
  35.        
  36.         INSERT fcalc_rashod(dt, shpz, mat, tzr_mat, pki, tzr_pki, zp, dop_zp, otchisl, prz_rashod, hoz_rashod, in_fond, proch, brak, seb, kom)
  37.         SELECT a.dt, a.shpz, (a.mat+ a.otkl_mat+ b.mat), (a.tzr_mat+ b.tzr_mat),
  38.         (a.pki+ a.otkl_pki+ b.pki), (a.tzr_pki+  b.tzr_pki), (a.zp+ a.otkl_zp+ b.zp), (a.dop_zp+  b.dop_zp), (a.otchisl+  b.otch),
  39.         a.proiz_rashod, a.hoz_rashod, a.in_fond, a.proch, a.brak,
  40.         (CAST((a.mat+ a.otkl_mat+ b.mat)AS BIGINT)+(a.tzr_mat+ b.tzr_mat)+(a.pki+ a.otkl_pki+ b.pki)+(a.tzr_pki+  b.tzr_pki)+
  41.         (a.zp+ a.otkl_zp+ b.zp)+ (a.dop_zp+  b.dop_zp)+(a.otchisl+  b.otch)+ a.proiz_rashod +a.hoz_rashod +a.in_fond+a.proch+a.brak),
  42.         a.kom_rash
  43.          FROM fcalc_kalk a, fcalc_prihod_netovar b
  44.          WHERE
  45.         (a.dt = @data) AND (a.dt = b.dt)  AND b.priznak = 2 AND( a.shpz = b.shpz)
  46.         /**/
  47.         INSERT fcalc_rashod(dt, shpz, mat, tzr_mat, pki, tzr_pki, zp, dop_zp, otchisl, prz_rashod, hoz_rashod, in_fond, proch, brak, seb, kom)
  48.         SELECT a.dt, a.shpz, (a.mat+ a.otkl_mat), a.tzr_mat,
  49.         (a.pki+ a.otkl_pki), a.tzr_pki, (a.zp+ a.otkl_zp) , a.dop_zp , a.otchisl,
  50.         a.proiz_rashod, a.hoz_rashod, a.in_fond, a.proch, a.brak,
  51.         (CAST((a.mat+ a.otkl_mat) AS bigint)+a.tzr_mat+(a.pki+ a.otkl_pki)+a.tzr_pki+
  52.         (a.zp+ a.otkl_zp)+ a.dop_zp + a.otchisl+ a.proiz_rashod +a.hoz_rashod +a.in_fond+a.proch+a.brak),
  53.         a.kom_rash
  54.         FROM fcalc_kalk a WHERE shpz NOT IN (
  55.             SELECT a.shpz  FROM fcalc_kalk a, fcalc_prihod_netovar b
  56.          WHERE
  57.         (a.dt = @data) AND (a.dt = b.dt)  AND b.priznak = 2 AND( a.shpz = b.shpz)
  58.         ) AND dt = @data
  59.        
  60.         /*FROM fcalc_kalk a
  61.         LEFT OUTER JOIN fcalc_prihod_netovar b ON
  62.         (a.dt = 201007) AND (a.dt = b.dt)  AND (b.priznak = 2) AND( a.shpz = b.shpz)
  63.         select * from fcalc_rashod  WHERE
  64.         (dt = 201007)
  65.         VALUES(@data, 2001, )(a.shpz = b.shpz)*/
  66.        
  67.     END
  68.     IF @pr = 3
  69.         BEGIN
  70.             update fcalc_prihod_netovar
  71.         set  seb = ISNULL(mat,0) +  ISNULL(tzr_mat,0) +  ISNULL(pki,0) +  ISNULL(tzr_pki,0)+  ISNULL(zp,0)+  ISNULL(dop_zp,0)+  ISNULL(otch,0)
  72.     WHERE dt = @data AND priznak = 2
  73.         END
  74.    
  75. end
  76.  
  77. GO
  78. SET QUOTED_IDENTIFIER OFF
  79. GO
  80. SET ANSI_NULLS ON
  81. GO
Add Comment
Please, Sign In to add comment