SBO_Balance_Comprobacion_Todas.sql 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431
  1. USE [SAP_INVERLEC_ES]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[SBO_Balance_Comprobacion_Todas] Script Date: 04/17/2018 14:29:46 ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. -- =============================================
  9. -- Author: Amarelis Ortiz Cañas
  10. -- Create date: 22/02/2018
  11. ---modificado: 26/02/2018
  12. -- Description: Balance de Comprobacion LEGAL NUEVO
  13. /*
  14. Con parametros de entrada Fecha Inicial y Final,
  15. sin bucles anidados para Guatemala
  16. */
  17. --============================================================
  18. ALTER PROCEDURE [dbo].[SBO_Balance_Comprobacion_Todas]
  19. -- Add the parameters for the stored procedure here
  20. @FechaI DateTime
  21. ,@FechaF DateTime
  22. ,@TIPO_REPORTE INT
  23. --0: REPORTE NORMAL (TODAS LAS CUENTAS), 1: REPORTE CON SALDOS A LA FECHA, 2: REPORTE LEGAL
  24. --, @Nivel int --(nada hace solo referencia)
  25. ,@IncPrelim nvarchar(1)='N' ----S incluye preliminares, N no incluye preliminares, P solo preliminares
  26. AS
  27. BEGIN
  28. Declare
  29. @CuentaINI nvarchar(100)
  30. ,@CuentaFIN nvarchar(100)
  31. -- SET NOCOUNT ON added to prevent extra result sets from
  32. -- interfering with SELECT statements.
  33. SET NOCOUNT ON;
  34. set @CuentaINI = (select top 1 AcctName from OACT order by AcctCode ASC)
  35. set @CuentaFIN = (select top 1 AcctName from OACT order by AcctCode DESC)
  36. -----------------------------------------------------------------------------------
  37. -- Insert statements for procedure here
  38. DECLARE @Balance_Comprobacion
  39. TABLE(Codigo varchar(25)--, Nombre_Cuenta varchar(100)
  40. , Saldo_IniL numeric(20,2), DebitosL numeric(20,2)
  41. , CreditosL numeric(20,2), Saldo_FinL numeric(20,2)
  42. , Saldo_IniS numeric(20,2), DebitosS numeric(20,2)
  43. , CreditosS numeric(20,2), Saldo_FinS numeric(20,2), Mascara int)
  44. -----------------------------------------------------------------------------
  45. DECLARE @Balance_Tipo
  46. TABLE(Codigo varchar(25), Cuenta varchar(25),Nombre_Cuenta varchar(100)
  47. , Saldo_IniL numeric(20,2), DebitosL numeric(20,2)
  48. , CreditosL numeric(20,2), Saldo_FinL numeric(20,2)
  49. , Saldo_IniS numeric(20,2), DebitosS numeric(20,2)
  50. , CreditosS numeric(20,2), Saldo_FinS numeric(20,2))
  51. ------------------------------------------------------------------------------
  52. declare @Registros int
  53. Declare @FechaIni date, @FechaFin date
  54. SET @FechaIni = convert(date, convert(varchar, YEAR(@FechaI))+'-01-01')
  55. set @FechaFin = convert(date, convert(varchar, YEAR(@FechaI))+'-01-31')
  56. -------------------PARA SABER SI INICIA OPERACIONES UNA EMPRESA--------------
  57. set @Registros = (select COUNT('A')
  58. FROM [JDT1] T0
  59. INNER JOIN [dbo].[OJDT] T1 ON T1.[TransId] = T0.[TransId]
  60. INNER JOIN [dbo].[OACT] T2 ON T0.Account = T2.AcctCode
  61. WHERE
  62. T0.[RefDate] < @FechaI
  63. AND T0.[TransType] <> ('-3')
  64. AND (T0.[SourceLine] <> (-8) OR T0.[SourceLine] IS NULL ) )
  65. -----------SALDOS INICIALES----------------------------------------------------
  66. IF Upper(@IncPrelim)<>'P'
  67. BEGIN
  68. -------------------PARA EMPRESAS QUE NO HAN INICIADO OPERACIONES--------------
  69. if @Registros = 0
  70. BEGIN
  71. INSERT @Balance_Comprobacion
  72. SELECT
  73. T0.[Account]
  74. ,CASE
  75. WHEN T2.GroupMask IN (1) THEN SUM(T0.[Debit]-T0.[Credit])
  76. WHEN T2.GroupMask IN (2,3) THEN SUM(T0.[Credit]-T0.[Debit])
  77. else 0.00
  78. END 'SaldoIniL'
  79. , 0.00 AS DebitosL
  80. , 0.00 AS CreditosL
  81. , 0.00 AS Saldos_FinL
  82. ,CASE
  83. WHEN T2.GroupMask IN (1) THEN SUM(T0.[SYSDeb]-T0.[SYSCred])
  84. WHEN T2.GroupMask IN (2,3) THEN SUM(T0.[SYSCred]-T0.[SYSDeb])
  85. else 0.00
  86. END 'SaldoIniS'
  87. ,0.00 AS DebitosS
  88. , 0.00 AS CreditosS
  89. , 0.00 AS Saldos_FinS
  90. , T2.GroupMask
  91. FROM [dbo].[JDT1] T0
  92. INNER JOIN [dbo].[OJDT] T1 ON T1.[TransId] = T0.[TransId]
  93. INNER JOIN [dbo].[OACT] T2 ON T0.Account = T2.AcctCode
  94. WHERE
  95. T0.[RefDate] >= @FechaIni AND T0.[RefDate] <= @FechaFin
  96. AND T0.[TransType] <> (-3) AND (T0.[SourceLine] <> (-8)
  97. OR T0.[SourceLine] IS NULL ) AND T0.[TransType] = (-2)
  98. AND T2.GroupMask IN (1,2,3)
  99. GROUP BY T0.[Account], T2.GroupMask
  100. END
  101. ELSE
  102. BEGIN
  103. INSERT @Balance_Comprobacion
  104. SELECT
  105. T0.[Account]
  106. ,CASE
  107. WHEN T2.GroupMask IN (1) THEN SUM(T0.[Debit]-T0.[Credit])
  108. WHEN T2.GroupMask IN (2,3) THEN SUM(T0.[Credit]-T0.[Debit])
  109. else 0.00
  110. END 'SaldoIniL'
  111. , 0.00 AS DebitosL
  112. , 0.00 AS CreditosL
  113. , 0.00 AS Saldos_FinL
  114. ,CASE
  115. WHEN T2.GroupMask IN (1) THEN SUM(T0.[SYSDeb]-T0.[SYSCred])
  116. WHEN T2.GroupMask IN (2,3) THEN SUM(T0.[SYSCred]-T0.[SYSDeb])
  117. else 0.00
  118. END 'SaldoIniS'
  119. ,0.00 AS DebitosS
  120. , 0.00 AS CreditosS
  121. , 0.00 AS Saldos_FinS
  122. , T2.GroupMask
  123. FROM [dbo].[JDT1] T0
  124. INNER JOIN [dbo].[OJDT] T1 ON T1.[TransId] = T0.[TransId]
  125. INNER JOIN [dbo].[OACT] T2 ON T0.Account = T2.AcctCode
  126. WHERE
  127. T0.[RefDate] < @FechaI
  128. AND T0.[TransType] <> (N'-3')
  129. AND (T0.[SourceLine] <> (-8) OR T0.[SourceLine] IS NULL )
  130. AND T2.GroupMask IN (1,2,3)
  131. GROUP BY T0.[Account], T2.GroupMask
  132. END
  133. ----------------PARA INVERLEC 07/03/2018---------------------------------------------
  134. declare @Empresa varchar(50)
  135. set @Empresa = (select CompnyName from OADM)
  136. if @Empresa = 'INVERLEC'
  137. UPDATE @Balance_Comprobacion set Saldo_IniL = Saldo_IniL -125.41
  138. ,Saldo_IniS = Saldo_IniS -125.41
  139. from @Balance_Comprobacion
  140. where Codigo = '_SYS00000001683' and year(@FechaI) > 2014
  141. -------------------ESTADO DE RESULTADOS--------------------------------
  142. INSERT @Balance_Comprobacion
  143. SELECT
  144. T0.[Account]
  145. ,CASE
  146. WHEN T2.GroupMask IN (5,6,8) THEN SUM(T0.[Debit]-T0.[Credit])
  147. WHEN T2.GroupMask IN (4,7) THEN SUM(T0.[Credit]-T0.[Debit])
  148. else 0.00
  149. END 'SaldoIniL'
  150. , 0.00 AS DebitosL
  151. , 0.00 AS CreditosL
  152. , 0.00 AS Saldos_FinL
  153. ,CASE
  154. WHEN T2.GroupMask IN (5,6,8) THEN SUM(T0.[SYSDeb]-T0.[SYSCred])
  155. WHEN T2.GroupMask IN (4,7) THEN SUM(T0.[SYSCred]-T0.[SYSDeb])
  156. else 0.00
  157. END 'SaldoIniS'
  158. ,0.00 AS DebitosS
  159. , 0.00 AS CreditosS
  160. , 0.00 AS Saldos_FinS
  161. , T2.GroupMask
  162. FROM [dbo].[JDT1] T0
  163. INNER JOIN [dbo].[OJDT] T1 ON T1.[TransId] = T0.[TransId]
  164. INNER JOIN [dbo].[OACT] T2 ON T0.Account = T2.AcctCode
  165. WHERE
  166. T0.[RefDate] >= @FechaIni AND T0.[RefDate] <= @FechaI
  167. AND T0.[TransType] <> (N'-3')
  168. AND (T0.[SourceLine] <> (-8) OR T0.[SourceLine] IS NULL )
  169. AND T2.GroupMask IN (4,5,6,7,8)
  170. GROUP BY T0.[Account], T2.GroupMask
  171. -------------------------------------------------------
  172. INSERT @Balance_Comprobacion
  173. ------------------------CREDITOS Y DEBITOS-----------------------
  174. SELECT
  175. T0.[Account]
  176. , 0.00 'SaldoIniL'
  177. , SUM(T0.[Debit])
  178. , SUM(T0.[Credit])
  179. , 0.00 AS Saldos_FinL
  180. , 0.00 'SaldoIniS'
  181. , SUM(T0.[SYSDeb])
  182. , SUM(T0.[SYSCred])
  183. , 0.00 AS Saldos_FinS
  184. ,t2.GroupMask
  185. FROM [dbo].[JDT1] T0
  186. INNER JOIN [dbo].[OJDT] T1 ON T1.[TransId] = T0.[TransId]
  187. INNER JOIN [dbo].[OACT] T2 ON T0.Account = T2.AcctCode
  188. WHERE
  189. T0.[RefDate] >= @FechaI AND T0.[RefDate] <= @FechaF
  190. AND T0.[TransType] <> (-3) AND (T0.[SourceLine] <> (-8)
  191. OR T0.[SourceLine] IS NULL ) AND T0.[TransType] <> (-2)
  192. GROUP BY
  193. T0.[Account]
  194. ,t2.GroupMask
  195. END
  196. ---------------------------------------------------------------------------------
  197. ---------------------PRELIMINARES-------------------------------------------------
  198. IF Upper(@IncPrelim)<>'N'
  199. BEGIN
  200. if @Registros = 0
  201. BEGIN
  202. INSERT @Balance_Comprobacion
  203. SELECT
  204. T0.[Account]
  205. ,CASE
  206. WHEN T2.GroupMask IN (1) THEN SUM(T0.[Debit]-T0.[Credit])
  207. WHEN T2.GroupMask IN (2,3) THEN SUM(T0.[Credit]-T0.[Debit])
  208. else 0.00
  209. END 'SaldoIniL'
  210. , 0.00 AS DebitosL
  211. , 0.00 AS CreditosL
  212. , 0.00 AS Saldos_FinL
  213. ,CASE
  214. WHEN T2.GroupMask IN (1) THEN SUM(T0.[SYSDeb]-T0.[SYSCred])
  215. WHEN T2.GroupMask IN (2,3) THEN SUM(T0.[SYSCred]-T0.[SYSDeb])
  216. else 0.00
  217. END 'SaldoIniS'
  218. ,0.00 AS DebitosS
  219. , 0.00 AS CreditosS
  220. , 0.00 AS Saldos_FinS
  221. ,t2.GroupMask
  222. FROM [BTF1] T0
  223. INNER JOIN [OBTF] T1 ON T0.[BatchNum] = T1.[BatchNum]
  224. JOIN [OACT] T2 ON T0.Account = T2.AcctCode
  225. WHERE
  226. T0.[RefDate] >= @FechaI AND T0.[RefDate] <= @FechaF AND
  227. T0.[TransType] <> (-3) AND (T0.[SourceLine] <> (-8)
  228. OR T0.[SourceLine] IS NULL ) AND T0.[TransType] = (-2)
  229. AND T0.[TransId] = T1.[TransId]
  230. AND T1.[BtfStatus] <> ('C')
  231. AND T2.GroupMask IN (1,2,3)
  232. GROUP BY
  233. T0.[Account],
  234. T2.GroupMask
  235. END
  236. ELSE
  237. BEGIN
  238. INSERT @Balance_Comprobacion
  239. SELECT
  240. T0.[Account]
  241. ,CASE
  242. WHEN T2.GroupMask IN (1) THEN SUM(T0.[Debit]-T0.[Credit])
  243. WHEN T2.GroupMask IN (2,3) THEN SUM(T0.[Credit]-T0.[Debit])
  244. else 0.00
  245. END 'SaldoIniL'
  246. , 0.00 AS DebitosL
  247. , 0.00 AS CreditosL
  248. , 0.00 AS Saldos_FinL
  249. ,CASE
  250. WHEN T2.GroupMask IN (1) THEN SUM(T0.[SYSDeb]-T0.[SYSCred])
  251. WHEN T2.GroupMask IN (2,3) THEN SUM(T0.[SYSCred]-T0.[SYSDeb])
  252. else 0.00
  253. END 'SaldoIniS'
  254. ,0.00 AS DebitosS
  255. , 0.00 AS CreditosS
  256. , 0.00 AS Saldos_FinS
  257. ,t2.GroupMask
  258. FROM
  259. [BTF1] T0
  260. INNER JOIN [OBTF] T1 ON T0.[BatchNum] = T1.[BatchNum]
  261. JOIN [OACT] T2 ON T0.Account = T2.AcctCode
  262. WHERE
  263. T0.[RefDate] < @FechaI
  264. AND T0.[TransType] <> (N'-3')
  265. AND (T0.[SourceLine] <> (-8) OR T0.[SourceLine] IS NULL )
  266. AND T0.[TransId] = T1.[TransId]
  267. AND T1.[BtfStatus] <> ('C')
  268. AND T2.GroupMask IN (1,2,3)
  269. GROUP BY
  270. T0.[Account],
  271. T2.GroupMask
  272. END
  273. -------------------ESTADO DE RESULTADOS--------------------------------
  274. INSERT @Balance_Comprobacion
  275. SELECT
  276. T0.[Account]
  277. ,CASE
  278. WHEN T2.GroupMask IN (5,6,8) THEN SUM(T0.[Debit]-T0.[Credit])
  279. WHEN T2.GroupMask IN (4,7) THEN SUM(T0.[Credit]-T0.[Debit])
  280. else 0.00
  281. END 'SaldoIniL'
  282. , 0.00 AS DebitosL
  283. , 0.00 AS CreditosL
  284. , 0.00 AS Saldos_FinL
  285. ,CASE
  286. WHEN T2.GroupMask IN (5,6,8) THEN SUM(T0.[SYSDeb]-T0.[SYSCred])
  287. WHEN T2.GroupMask IN (4,7) THEN SUM(T0.[SYSCred]-T0.[SYSDeb])
  288. else 0.00
  289. END 'SaldoIniS'
  290. ,0.00 AS DebitosS
  291. , 0.00 AS CreditosS
  292. , 0.00 AS Saldos_FinS
  293. , T2.GroupMask
  294. FROM
  295. [BTF1] T0
  296. INNER JOIN [OBTF] T1 ON T0.[BatchNum] = T1.[BatchNum]
  297. JOIN [OACT] T2 ON T0.Account = T2.AcctCode
  298. WHERE
  299. T0.[RefDate] >= @FechaIni AND T0.[RefDate] <= @FechaI
  300. AND T0.[TransType] <> (N'-3')
  301. AND (T0.[SourceLine] <> (-8) OR T0.[SourceLine] IS NULL )
  302. AND T0.[TransId] = T1.[TransId]
  303. AND T1.[BtfStatus] <> ('C')
  304. AND T2.GroupMask IN (4,5,6,7,8)
  305. GROUP BY T0.[Account], T2.GroupMask
  306. ------------------------CREDITOS Y DEBITOS-----------------------
  307. INSERT @Balance_Comprobacion
  308. SELECT
  309. T0.[Account]
  310. , 0.00 'SaldoIniL'
  311. , SUM(T0.[Debit])
  312. , SUM(T0.[Credit])
  313. , 0.00 AS Saldos_FinL
  314. , 0.00 'SaldoIniS'
  315. , SUM(T0.[SYSDeb])
  316. , SUM(T0.[SYSCred])
  317. , 0.00 AS Saldos_FinS
  318. ,t2.GroupMask
  319. FROM
  320. [BTF1] T0
  321. INNER JOIN [OBTF] T1 ON T0.[BatchNum] = T1.[BatchNum]
  322. JOIN [OACT] T2 ON T0.Account = T2.AcctCode
  323. WHERE
  324. T0.[RefDate] >= @FechaI AND T0.[RefDate] <= @FechaF
  325. AND T0.[TransType] <> (-3) AND (T0.[SourceLine] <> (-8)
  326. OR T0.[SourceLine] IS NULL ) AND T0.[TransType] <> (-2)
  327. AND T0.[TransId] = T1.[TransId]
  328. AND T1.[BtfStatus] <> ('C')
  329. --AND T2.GroupMask IN (1,2,3)
  330. GROUP BY
  331. T0.[Account]
  332. ,t2.GroupMask
  333. END
  334. ------------------------------------------------------------------------------------------------
  335. select
  336. Codigo
  337. ,(select Segment_0 from OACT where AcctCode = Codigo) 'Cuenta'
  338. ,(select AcctName from OACT where AcctCode = Codigo) 'NombredeCuenta'
  339. , sum(Saldo_IniL)'Saldo_IniL'
  340. , sum(DebitosL) 'DebitosL'
  341. , sum(CreditosL) 'CreditosL'
  342. ,CASE
  343. WHEN Mascara IN (1,5,6,8) THEN (sum(Saldo_IniL)+sum(DebitosL)-sum(CreditosL))
  344. WHEN Mascara IN (2,3,4,7) THEN (sum(Saldo_IniL)+sum(CreditosL)-sum(DebitosL))*-1
  345. END 'Saldo_FinL'
  346. , sum(Saldo_IniS)'Saldo_IniS'
  347. , sum(DebitosS) 'DebitosS'
  348. , sum(CreditosS) 'CreditosS'
  349. ,CASE
  350. WHEN Mascara IN (1,5,6,8) THEN (sum(Saldo_IniS)+sum(DebitosS)-sum(CreditosS))
  351. WHEN Mascara IN (2,3,4,7) THEN (sum(Saldo_IniS)+sum(CreditosS)-sum(DebitosS))*-1
  352. END 'Saldo_FinS'
  353. into #TEMP1
  354. from @Balance_Comprobacion
  355. --where Mascara = @Nivel
  356. Group by
  357. Codigo
  358. , Mascara
  359. order by Cuenta
  360. --------------------------------------------------------------------------------------------
  361. ---------CUENTAS FALTANTES------------------------------------------------------------------
  362. INSERT INTO #TEMP1
  363. select B.AcctCode,B.Segment_0,B.AcctName
  364. ,0.00
  365. ,0.00
  366. ,0.00
  367. ,0.00
  368. ,0.00
  369. ,0.00
  370. ,0.00
  371. ,0.00
  372. from OACT B
  373. WHERE
  374. B.FormatCode IS NOT NULL
  375. AND B.AcctCode NOT IN(SELECT Codigo FROM @Balance_Comprobacion)
  376. --SELECT * FROM #TEMP1
  377. --------------------------------------------------------------------------------------
  378. IF @TIPO_REPORTE =0
  379. INSERT INTO @Balance_Tipo
  380. select *
  381. from #TEMP1
  382. else
  383. INSERT INTO @Balance_Tipo
  384. select *
  385. from #TEMP1
  386. WHERE
  387. abs(Saldo_IniL)+ abs(DebitosL)+abs(CreditosL)+ abs(Saldo_FinL) <>0
  388. or abs(Saldo_IniS)+ abs(DebitosS)+abs(CreditosS)+ abs(Saldo_FinS) <>0
  389. ------------------------------------------------------------------------------------------
  390. ------------------------------------------------------------------------------------------
  391. SELECT
  392. LEFT(N1.AcctCode,1) 'AcctCodeN1'
  393. ,T0.Codigo
  394. ,N1.AcctName 'AcctNameN1'
  395. ,N2.AcctCode 'AcctCodeN2'
  396. ,N2.AcctName 'AcctNameN2'
  397. ,N3.AcctCode 'AcctCodeN3'
  398. ,N3.AcctName 'AcctNameN3'
  399. ,N4.AcctCode 'AcctCodeN4'
  400. ,N4.AcctName 'AcctNameN4'
  401. ,N5.FormatCode
  402. ,T0.Cuenta
  403. ,T0.Nombre_Cuenta
  404. ,T0.Saldo_IniL
  405. ,T0.DebitosL
  406. ,T0.CreditosL
  407. , T0.Saldo_FinL
  408. ,T0.Saldo_IniS
  409. ,T0.DebitosS
  410. ,T0.CreditosS
  411. , T0.Saldo_FinS
  412. FROM @Balance_Tipo T0
  413. INNER JOIN OACT N5 ON T0.Codigo=N5.AcctCode
  414. INNER JOIN OACT N4 ON N4.AcctCode=N5.FatherNum
  415. INNER JOIN OACT N3 ON N3.AcctCode=N4.FatherNum
  416. INNER JOIN OACT N2 ON N2.AcctCode=N3.FatherNum
  417. INNER JOIN OACT N1 ON N1.AcctCode=N2.FatherNum
  418. -------------------------------------------------------
  419. DROP TABLE #Temp1
  420. end