SBO_Balance_Comprobacion_Todas.sql 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431
  1. USE [SAP_INVERLEC_ES_PROGRAMACION_5]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[SBO_Balance_Comprobacion_Todas] Script Date: 04/17/2018 15:22:51 ******/
  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. -------------------ESTADO DE RESULTADOS--------------------------------
  134. INSERT @Balance_Comprobacion
  135. SELECT
  136. T0.[Account]
  137. ,CASE
  138. WHEN T2.GroupMask IN (5,6,8) THEN SUM(T0.[Debit]-T0.[Credit])
  139. WHEN T2.GroupMask IN (4,7) THEN SUM(T0.[Credit]-T0.[Debit])
  140. else 0.00
  141. END 'SaldoIniL'
  142. , 0.00 AS DebitosL
  143. , 0.00 AS CreditosL
  144. , 0.00 AS Saldos_FinL
  145. ,CASE
  146. WHEN T2.GroupMask IN (5,6,8) THEN SUM(T0.[SYSDeb]-T0.[SYSCred])
  147. WHEN T2.GroupMask IN (4,7) THEN SUM(T0.[SYSCred]-T0.[SYSDeb])
  148. else 0.00
  149. END 'SaldoIniS'
  150. ,0.00 AS DebitosS
  151. , 0.00 AS CreditosS
  152. , 0.00 AS Saldos_FinS
  153. , T2.GroupMask
  154. FROM [dbo].[JDT1] T0
  155. INNER JOIN [dbo].[OJDT] T1 ON T1.[TransId] = T0.[TransId]
  156. INNER JOIN [dbo].[OACT] T2 ON T0.Account = T2.AcctCode
  157. WHERE
  158. T0.[RefDate] >= @FechaIni AND T0.[RefDate] <= @FechaI
  159. AND T0.[TransType] <> (N'-3')
  160. AND (T0.[SourceLine] <> (-8) OR T0.[SourceLine] IS NULL )
  161. AND T2.GroupMask IN (4,5,6,7,8)
  162. GROUP BY T0.[Account], T2.GroupMask
  163. -------------------------------------------------------
  164. INSERT @Balance_Comprobacion
  165. --select * from @Balance_Comprobacion
  166. ------------------------CREDITOS Y DEBITOS-----------------------
  167. SELECT
  168. T0.[Account]
  169. , 0.00 'SaldoIniL'
  170. , SUM(T0.[Debit])
  171. , SUM(T0.[Credit])
  172. , 0.00 AS Saldos_FinL
  173. , 0.00 'SaldoIniS'
  174. , SUM(T0.[SYSDeb])
  175. , SUM(T0.[SYSCred])
  176. , 0.00 AS Saldos_FinS
  177. ,t2.GroupMask
  178. FROM [dbo].[JDT1] T0
  179. INNER JOIN [dbo].[OJDT] T1 ON T1.[TransId] = T0.[TransId]
  180. INNER JOIN [dbo].[OACT] T2 ON T0.Account = T2.AcctCode
  181. WHERE
  182. T0.[RefDate] >= @FechaI AND T0.[RefDate] <= @FechaF
  183. AND T0.[TransType] <> (-3) AND (T0.[SourceLine] <> (-8)
  184. OR T0.[SourceLine] IS NULL ) AND T0.[TransType] <> (-2)
  185. GROUP BY
  186. T0.[Account]
  187. ,t2.GroupMask
  188. END
  189. ---------------------------------------------------------------------------------
  190. ---------------------PRELIMINARES-------------------------------------------------
  191. IF Upper(@IncPrelim)<>'N'
  192. BEGIN
  193. if @Registros = 0
  194. BEGIN
  195. INSERT @Balance_Comprobacion
  196. SELECT
  197. T0.[Account]
  198. ,CASE
  199. WHEN T2.GroupMask IN (1) THEN SUM(T0.[Debit]-T0.[Credit])
  200. WHEN T2.GroupMask IN (2,3) THEN SUM(T0.[Credit]-T0.[Debit])
  201. else 0.00
  202. END 'SaldoIniL'
  203. , 0.00 AS DebitosL
  204. , 0.00 AS CreditosL
  205. , 0.00 AS Saldos_FinL
  206. ,CASE
  207. WHEN T2.GroupMask IN (1) THEN SUM(T0.[SYSDeb]-T0.[SYSCred])
  208. WHEN T2.GroupMask IN (2,3) THEN SUM(T0.[SYSCred]-T0.[SYSDeb])
  209. else 0.00
  210. END 'SaldoIniS'
  211. ,0.00 AS DebitosS
  212. , 0.00 AS CreditosS
  213. , 0.00 AS Saldos_FinS
  214. ,t2.GroupMask
  215. FROM [BTF1] T0
  216. INNER JOIN [OBTF] T1 ON T0.[BatchNum] = T1.[BatchNum]
  217. JOIN [OACT] T2 ON T0.Account = T2.AcctCode
  218. WHERE
  219. T0.[RefDate] >= @FechaI AND T0.[RefDate] <= @FechaF AND
  220. T0.[TransType] <> (-3) AND (T0.[SourceLine] <> (-8)
  221. OR T0.[SourceLine] IS NULL ) AND T0.[TransType] = (-2)
  222. AND T0.[TransId] = T1.[TransId]
  223. AND T1.[BtfStatus] <> ('C')
  224. AND T2.GroupMask IN (1,2,3)
  225. GROUP BY
  226. T0.[Account],
  227. T2.GroupMask
  228. END
  229. ELSE
  230. BEGIN
  231. INSERT @Balance_Comprobacion
  232. SELECT
  233. T0.[Account]
  234. ,CASE
  235. WHEN T2.GroupMask IN (1) THEN SUM(T0.[Debit]-T0.[Credit])
  236. WHEN T2.GroupMask IN (2,3) THEN SUM(T0.[Credit]-T0.[Debit])
  237. else 0.00
  238. END 'SaldoIniL'
  239. , 0.00 AS DebitosL
  240. , 0.00 AS CreditosL
  241. , 0.00 AS Saldos_FinL
  242. ,CASE
  243. WHEN T2.GroupMask IN (1) THEN SUM(T0.[SYSDeb]-T0.[SYSCred])
  244. WHEN T2.GroupMask IN (2,3) THEN SUM(T0.[SYSCred]-T0.[SYSDeb])
  245. else 0.00
  246. END 'SaldoIniS'
  247. ,0.00 AS DebitosS
  248. , 0.00 AS CreditosS
  249. , 0.00 AS Saldos_FinS
  250. ,t2.GroupMask
  251. FROM
  252. [BTF1] T0
  253. INNER JOIN [OBTF] T1 ON T0.[BatchNum] = T1.[BatchNum]
  254. JOIN [OACT] T2 ON T0.Account = T2.AcctCode
  255. WHERE
  256. T0.[RefDate] < @FechaI
  257. AND T0.[TransType] <> (N'-3')
  258. AND (T0.[SourceLine] <> (-8) OR T0.[SourceLine] IS NULL )
  259. AND T0.[TransId] = T1.[TransId]
  260. AND T1.[BtfStatus] <> ('C')
  261. AND T2.GroupMask IN (1,2,3)
  262. GROUP BY
  263. T0.[Account],
  264. T2.GroupMask
  265. END
  266. -------------------ESTADO DE RESULTADOS--------------------------------
  267. INSERT @Balance_Comprobacion
  268. SELECT
  269. T0.[Account]
  270. ,CASE
  271. WHEN T2.GroupMask IN (5,6,8) THEN SUM(T0.[Debit]-T0.[Credit])
  272. WHEN T2.GroupMask IN (4,7) THEN SUM(T0.[Credit]-T0.[Debit])
  273. else 0.00
  274. END 'SaldoIniL'
  275. , 0.00 AS DebitosL
  276. , 0.00 AS CreditosL
  277. , 0.00 AS Saldos_FinL
  278. ,CASE
  279. WHEN T2.GroupMask IN (5,6,8) THEN SUM(T0.[SYSDeb]-T0.[SYSCred])
  280. WHEN T2.GroupMask IN (4,7) THEN SUM(T0.[SYSCred]-T0.[SYSDeb])
  281. else 0.00
  282. END 'SaldoIniS'
  283. ,0.00 AS DebitosS
  284. , 0.00 AS CreditosS
  285. , 0.00 AS Saldos_FinS
  286. , T2.GroupMask
  287. FROM
  288. [BTF1] T0
  289. INNER JOIN [OBTF] T1 ON T0.[BatchNum] = T1.[BatchNum]
  290. JOIN [OACT] T2 ON T0.Account = T2.AcctCode
  291. WHERE
  292. T0.[RefDate] >= @FechaIni AND T0.[RefDate] <= @FechaI
  293. AND T0.[TransType] <> (N'-3')
  294. AND (T0.[SourceLine] <> (-8) OR T0.[SourceLine] IS NULL )
  295. AND T0.[TransId] = T1.[TransId]
  296. AND T1.[BtfStatus] <> ('C')
  297. AND T2.GroupMask IN (4,5,6,7,8)
  298. GROUP BY T0.[Account], T2.GroupMask
  299. -------------------------------------------------------
  300. --select * from @Balance_Comprobacion
  301. ------------------------CREDITOS Y DEBITOS-----------------------
  302. INSERT @Balance_Comprobacion
  303. SELECT
  304. T0.[Account]
  305. , 0.00 'SaldoIniL'
  306. , SUM(T0.[Debit])
  307. , SUM(T0.[Credit])
  308. , 0.00 AS Saldos_FinL
  309. , 0.00 'SaldoIniS'
  310. , SUM(T0.[SYSDeb])
  311. , SUM(T0.[SYSCred])
  312. , 0.00 AS Saldos_FinS
  313. ,t2.GroupMask
  314. FROM
  315. [BTF1] T0
  316. INNER JOIN [OBTF] T1 ON T0.[BatchNum] = T1.[BatchNum]
  317. JOIN [OACT] T2 ON T0.Account = T2.AcctCode
  318. WHERE
  319. T0.[RefDate] >= @FechaI AND T0.[RefDate] <= @FechaF
  320. AND T0.[TransType] <> (-3) AND (T0.[SourceLine] <> (-8)
  321. OR T0.[SourceLine] IS NULL ) AND T0.[TransType] <> (-2)
  322. AND T0.[TransId] = T1.[TransId]
  323. AND T1.[BtfStatus] <> ('C')
  324. --AND T2.GroupMask IN (1,2,3)
  325. GROUP BY
  326. T0.[Account]
  327. ,t2.GroupMask
  328. END
  329. ------------------------------------------------------------------------------------------------
  330. select
  331. Codigo
  332. ,(select Segment_0 from OACT where AcctCode = Codigo) 'Cuenta'
  333. ,(select AcctName from OACT where AcctCode = Codigo) 'NombredeCuenta'
  334. , sum(Saldo_IniL)'Saldo_IniL'
  335. , sum(DebitosL) 'DebitosL'
  336. , sum(CreditosL) 'CreditosL'
  337. ,CASE
  338. WHEN Mascara IN (1,5,6,8) THEN (sum(Saldo_IniL)+sum(DebitosL)-sum(CreditosL))
  339. WHEN Mascara IN (2,3,4,7) THEN (sum(Saldo_IniL)+sum(CreditosL)-sum(DebitosL))*-1
  340. END 'Saldo_FinL'
  341. , sum(Saldo_IniS)'Saldo_IniS'
  342. , sum(DebitosS) 'DebitosS'
  343. , sum(CreditosS) 'CreditosS'
  344. ,CASE
  345. WHEN Mascara IN (1,5,6,8) THEN (sum(Saldo_IniS)+sum(DebitosS)-sum(CreditosS))
  346. WHEN Mascara IN (2,3,4,7) THEN (sum(Saldo_IniS)+sum(CreditosS)-sum(DebitosS))*-1
  347. END 'Saldo_FinS'
  348. into #TEMP1
  349. from @Balance_Comprobacion
  350. --where Mascara = @Nivel
  351. Group by
  352. Codigo
  353. , Mascara
  354. order by Cuenta
  355. --------------------------------------------------------------------------------------------
  356. ---------CUENTAS FALTANTES------------------------------------------------------------------
  357. INSERT INTO #TEMP1
  358. select B.AcctCode,B.Segment_0,B.AcctName
  359. ,0.00
  360. ,0.00
  361. ,0.00
  362. ,0.00
  363. ,0.00
  364. ,0.00
  365. ,0.00
  366. ,0.00
  367. from OACT B
  368. WHERE
  369. B.FormatCode IS NOT NULL
  370. AND B.AcctCode NOT IN(SELECT Codigo FROM @Balance_Comprobacion)
  371. --SELECT * FROM #TEMP1
  372. --------------------------------------------------------------------------------------
  373. IF @TIPO_REPORTE =0
  374. INSERT INTO @Balance_Tipo
  375. select *
  376. from #TEMP1
  377. else
  378. INSERT INTO @Balance_Tipo
  379. select *
  380. from #TEMP1
  381. WHERE
  382. abs(Saldo_IniL)+ abs(DebitosL)+abs(CreditosL)+ abs(Saldo_FinL) <>0
  383. or abs(Saldo_IniS)+ abs(DebitosS)+abs(CreditosS)+ abs(Saldo_FinS) <>0
  384. ------------------------------------------------------------------------------------------
  385. --IF @TIPO_REPORTE =1
  386. --INSERT INTO @Balance_Tipo
  387. -- select *
  388. -- from #TEMP1
  389. -- WHERE
  390. -- Codigo IN (SELECT A.AcctCode FROM OACT A WHERE A.CurrTotal<>0)
  391. ------------------------------------------------------------------------------------------
  392. SELECT
  393. LEFT(N1.AcctCode,1) 'AcctCodeN1'
  394. ,T0.Codigo
  395. ,N1.AcctName 'AcctNameN1'
  396. ,N2.AcctCode 'AcctCodeN2'
  397. ,N2.AcctName 'AcctNameN2'
  398. ,N3.AcctCode 'AcctCodeN3'
  399. ,N3.AcctName 'AcctNameN3'
  400. ,N4.AcctCode 'AcctCodeN4'
  401. ,N4.AcctName 'AcctNameN4'
  402. ,N5.FormatCode
  403. ,T0.Cuenta
  404. ,T0.Nombre_Cuenta
  405. ,T0.Saldo_IniL
  406. ,T0.DebitosL
  407. ,T0.CreditosL
  408. , T0.Saldo_FinL
  409. ,T0.Saldo_IniS
  410. ,T0.DebitosS
  411. ,T0.CreditosS
  412. , T0.Saldo_FinS
  413. FROM @Balance_Tipo T0
  414. INNER JOIN OACT N5 ON T0.Codigo=N5.AcctCode
  415. INNER JOIN OACT N4 ON N4.AcctCode=N5.FatherNum
  416. INNER JOIN OACT N3 ON N3.AcctCode=N4.FatherNum
  417. INNER JOIN OACT N2 ON N2.AcctCode=N3.FatherNum
  418. INNER JOIN OACT N1 ON N1.AcctCode=N2.FatherNum
  419. -------------------------------------------------------
  420. DROP TABLE #Temp1
  421. end