Guest User

Untitled

a guest
Oct 18th, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.53 KB | None | 0 0
  1. if exists (select 1
  2. from sysobjects
  3. where id = object_id('pru_valida_archivo_aumento')
  4. and type = 'P')
  5. drop procedure pru_valida_archivo_aumento
  6. go
  7.  
  8. CREATE PROC pru_valida_archivo_aumento
  9. ( @job integer )
  10. AS
  11. BEGIN
  12.  
  13. DECLARE @item integer,
  14. @tipo_registro char(20),
  15. @tregistro char(1),
  16. @nomen_largo integer,
  17. @nomen tinyint,
  18. @codigo char(10),
  19. @concep char(20),
  20. @opcion_concepto char(40),
  21. @moneda char(5),
  22. @porc_mas_val_p decimal(5,2),
  23. @porc_menos_val_p decimal(5,2),
  24. @por_valor_p decimal(5,2),
  25. @valor decimal(12,2),
  26. @unidad decimal(12,2),
  27. @opcion_valor_propio char(40),
  28. @porc_urg_diurna decimal(5,2),
  29. @porc_urg_nocturna decimal(5,2),
  30. @plus decimal(12,2),
  31. @opciones_val_plus char(40),
  32. @incluye_normas char(30),
  33. @excluye_normas char(30),
  34. @dias decimal(12,2),
  35. @dias_sala char(30),
  36. @opciones_normas char(40),
  37. @procesa_baja char(2),
  38. @validacion smallint,
  39. @estado_registro smallint,
  40. @error integer,
  41. @desc_error varchar(255),
  42. @rtn integer,
  43. @tipo_aumento char(1),
  44. @tunidad integer,
  45. @prestacion char(10),
  46. @capitulo char(2),
  47. @subcapitulo char(2),
  48. @vigencia datetime,
  49. @inter_sala tinyint,
  50. @conve integer,
  51. @estado_reg smallint,
  52. @estado_arch smallint,
  53. @estado_job smallint,
  54. @con_error bit
  55.  
  56. SELECT @tipo_aumento = id_tipo_aumento,
  57. @vigencia = vigencia,
  58. @conve = conve
  59. FROM jobs_aumento_masivo_convenio
  60. WHERE id_job = @job AND
  61. baja_fecha IS NULL
  62.  
  63.  
  64. DECLARE cur_archivo CURSOR FOR
  65. SELECT item,
  66. tipo_registro,
  67. nomen,
  68. codigo,
  69. concep,
  70. opcion_concepto,
  71. moneda,
  72. opcion_valor_propio,
  73. opciones_val_plus,
  74. opciones_normas
  75. FROM aumen_masivo_det_archivo
  76. WHERE id_job = @job
  77. FOR UPDATE OF id_estado, fecha_estado
  78.  
  79. SELECT @con_error = 0
  80. OPEN cur_archivo
  81.  
  82. WHILE 1 = 1
  83. BEGIN
  84. FETCH cur_archivo INTO @item, @tipo_registro, @nomen_largo, @codigo, @concep, @opcion_concepto, @moneda,
  85. @opcion_valor_propio, @opciones_val_plus, @opciones_normas
  86.  
  87. IF @@sqlstatus <> 0
  88. BREAK
  89.  
  90. SELECT @estado_reg = 9, @tregistro = ''
  91.  
  92. -- Valido tipo de registro
  93. EXEC @rtn = aummas_valida_tipo_registro @tipo_registro = @tipo_registro,
  94. @tipo_char = @tregistro OUTPUT,
  95. @error = @error OUTPUT
  96.  
  97. IF @rtn <> 0
  98. BEGIN
  99. CLOSE cur_archivo
  100. DEALLOCATE CURSOR cur_archivo
  101. raiserror 9999 "Error al validar los registros."
  102. RETURN 1
  103. END
  104.  
  105. IF @error <> 0
  106. BEGIN
  107. SELECT @desc_error = "Valor columna: " + convert(varchar(30), @tipo_registro)
  108.  
  109. -- Error en Tipo_Registro, Valor Invalido en Tipo de Registro.
  110. EXEC @rtn = pri_aum_mas_err_arch @id_job = @job,
  111. @item = @item,
  112. @id_error = @error,
  113. @descripcion = @desc_error
  114.  
  115. IF @rtn <> 0
  116. BEGIN
  117. CLOSE cur_archivo
  118. DEALLOCATE CURSOR cur_archivo
  119. RETURN 1
  120. END
  121. SELECT @estado_reg = 10, @con_error = 1
  122. END
  123.  
  124. /******************************/
  125. /* VALIDACIONES TIPO UNIDAD */
  126. /******************************/
  127. IF @tregistro = 'T'
  128. BEGIN
  129. SELECT @tunidad = convert(integer, @codigo)
  130.  
  131. EXEC @rtn = aummas_valida_tipo_unidad @tipo_unidad = @tunidad,
  132. @error = @error OUTPUT
  133.  
  134. IF @rtn <> 0
  135. BEGIN
  136. CLOSE cur_archivo
  137. DEALLOCATE CURSOR cur_archivo
  138. raiserror 99999 "Error en aummas_valida_tipo_unidad."
  139. RETURN 1
  140. END
  141.  
  142. IF @error <> 0
  143. BEGIN
  144. SELECT @desc_error = "Tipo Unidad: " + convert(varchar(30), @codigo)
  145.  
  146. EXEC @rtn = pri_aum_mas_err_arch @id_job = @job,
  147. @item = @item,
  148. @id_error = @error,
  149. @descripcion = @desc_error
  150.  
  151. IF @rtn <> 0
  152. BEGIN
  153. CLOSE cur_archivo
  154. DEALLOCATE CURSOR cur_archivo
  155. RETURN 1
  156. END
  157. SELECT @estado_reg = 10, @con_error = 1
  158. END
  159. END
  160.  
  161. /******************************/
  162. /* VALIDACIONES NOMENCLADOR */
  163. /******************************/
  164. IF @nomen_largo >= 1024 OR @nomen_largo <= 0
  165. BEGIN
  166. SELECT @desc_error = "Nomen: " + isnull(convert(varchar(15), @nomen_largo), "")
  167.  
  168. EXEC @rtn = pri_aum_mas_err_arch @id_job = @job,
  169. @item = @item,
  170. @id_error = 946,
  171. @descripcion = @desc_error
  172.  
  173. IF @rtn <> 0
  174. BEGIN
  175. CLOSE cur_archivo
  176. DEALLOCATE CURSOR cur_archivo
  177. RETURN 1
  178. END
  179. SELECT @estado_reg = 10, @con_error = 1
  180.  
  181. UPDATE aumen_masivo_det_archivo
  182. SET id_estado = @estado_reg,
  183. fecha_estado = getdate()
  184. WHERE CURRENT OF cur_archivo
  185.  
  186. SELECT @error = @@error
  187. IF @error <> 0
  188. BEGIN
  189. raiserror 99999 "Error al cambiar el estado del registro."
  190. RETURN 1
  191. END
  192. CONTINUE
  193. END
  194. ELSE
  195. SELECT @nomen = @nomen_largo
  196.  
  197. IF @tregistro = 'N'
  198. BEGIN
  199. SELECT @nomen = convert(tinyint, @codigo)
  200.  
  201. EXEC @rtn = aummas_valida_nomenclador @nomen = @nomen,
  202. @fecha_aumento = @vigencia,
  203. @error = @error OUTPUT
  204.  
  205. IF @rtn <> 0
  206. BEGIN
  207. CLOSE cur_archivo
  208. DEALLOCATE CURSOR cur_archivo
  209. raiserror 99999 "Error en aummas_valida_nomenclador."
  210. RETURN 1
  211. END
  212.  
  213. IF @error <> 0
  214. BEGIN
  215. SELECT @desc_error = "Nomen: " + isnull(convert(varchar(15), @nomen), "")
  216.  
  217. EXEC @rtn = pri_aum_mas_err_arch @id_job = @job,
  218. @item = @item,
  219. @id_error = @error,
  220. @descripcion = @desc_error
  221.  
  222. IF @rtn <> 0
  223. BEGIN
  224. CLOSE cur_archivo
  225. DEALLOCATE CURSOR cur_archivo
  226. RETURN 1
  227. END
  228. SELECT @estado_reg = 10, @con_error = 1
  229. END
  230. END
  231.  
  232. /******************************/
  233. /* VALIDACIONES PRESTACIONES */
  234. /******************************/
  235. IF @tregistro = 'P'
  236. BEGIN
  237. SELECT @prestacion = convert(char(10), @codigo)
  238.  
  239. EXEC @rtn = aummas_valida_prestacion @nomen = @nomen,
  240. @prestacion = @prestacion,
  241. @fecha_aumento = @vigencia,
  242. @error = @error OUTPUT
  243.  
  244. IF @rtn <> 0
  245. BEGIN
  246. CLOSE cur_archivo
  247. DEALLOCATE CURSOR cur_archivo
  248. raiserror 99999 "Error en aummas_valida_prestacion."
  249. RETURN 1
  250. END
  251.  
  252. IF @error <> 0
  253. BEGIN
  254. SELECT @desc_error = "Nomen: " + isnull(convert(varchar(15), @nomen), "") +
  255. " Prestacion: " + convert(varchar(30), @codigo)
  256.  
  257. EXEC @rtn = pri_aum_mas_err_arch @id_job = @job,
  258. @item = @item,
  259. @id_error = @error,
  260. @descripcion = @desc_error
  261.  
  262. IF @rtn <> 0
  263. BEGIN
  264. CLOSE cur_archivo
  265. DEALLOCATE CURSOR cur_archivo
  266. RETURN 1
  267. END
  268. SELECT @estado_reg = 10, @con_error = 1
  269. END
  270. END
  271.  
  272. /******************************/
  273. /* VALIDACIONES MODULO DIA */
  274. /******************************/
  275. IF @tregistro = 'M'
  276. BEGIN
  277. SELECT @inter_sala = convert(integer, @codigo)
  278.  
  279. EXEC @rtn = aummas_valida_modulo_dia @conve = @conve,
  280. @inter_sala = @inter_sala,
  281. @fecha_aumento = @vigencia,
  282. @error = @error OUTPUT
  283.  
  284. IF @rtn <> 0
  285. BEGIN
  286. CLOSE cur_archivo
  287. DEALLOCATE CURSOR cur_archivo
  288. raiserror 99999 "Error en aummas_valida_modulo_dia."
  289. RETURN 1
  290. END
  291.  
  292. IF @error <> 0
  293. BEGIN
  294. SELECT @desc_error = "Conve: " + isnull(convert(varchar(15), @conve), "") +
  295. " Modulo Dia: " + convert(varchar(30), @inter_sala)
  296.  
  297. EXEC @rtn = pri_aum_mas_err_arch @id_job = @job,
  298. @item = @item,
  299. @id_error = @error,
  300. @descripcion = @desc_error
  301.  
  302. IF @rtn <> 0
  303. BEGIN
  304. CLOSE cur_archivo
  305. DEALLOCATE CURSOR cur_archivo
  306. RETURN 1
  307. END
  308. SELECT @estado_reg = 10, @con_error = 1
  309. END
  310. END
  311.  
  312. /******************************/
  313. /* VALIDACIONES CAPITULO */
  314. /******************************/
  315. IF @tregistro = 'C'
  316. BEGIN
  317. SELECT @capitulo = convert(char(2), @codigo)
  318.  
  319. EXEC @rtn = aummas_valida_capitulo @nomen = @nomen,
  320. @capitulo = @capitulo,
  321. @fecha_aumento = @vigencia,
  322. @error = @error OUTPUT
  323.  
  324. IF @rtn <> 0
  325. BEGIN
  326. CLOSE cur_archivo
  327. DEALLOCATE CURSOR cur_archivo
  328. raiserror 99999 "Error en aummas_valida_capitulo."
  329. RETURN 1
  330. END
  331.  
  332. IF @error <> 0
  333. BEGIN
  334. SELECT @desc_error = "Nomen: " + isnull(convert(varchar(15), @nomen), "") +
  335. " Capitulo: " + convert(varchar(30), @codigo)
  336.  
  337. EXEC @rtn = pri_aum_mas_err_arch @id_job = @job,
  338. @item = @item,
  339. @id_error = @error,
  340. @descripcion = @desc_error
  341.  
  342. IF @rtn <> 0
  343. BEGIN
  344. CLOSE cur_archivo
  345. DEALLOCATE CURSOR cur_archivo
  346. RETURN 1
  347. END
  348. SELECT @estado_reg = 10, @con_error = 1
  349. END
  350. END
  351.  
  352. /******************************/
  353. /* VALIDACIONES SUBCAPITULO */
  354. /******************************/
  355. IF @tregistro = 'S'
  356. BEGIN
  357. SELECT @capitulo = substring(rtrim(ltrim(@codigo)), 1, 2),
  358. @subcapitulo = substring(rtrim(ltrim(@codigo)), 3, 2)
  359.  
  360. EXEC @rtn = aummas_valida_subcapitulo @nomen = @nomen,
  361. @capitulo = @capitulo,
  362. @subcapitulo = @subcapitulo,
  363. @fecha_aumento = @vigencia,
  364. @error = @error OUTPUT
  365.  
  366. IF @rtn <> 0
  367. BEGIN
  368. CLOSE cur_archivo
  369. DEALLOCATE CURSOR cur_archivo
  370. raiserror 99999 "Error en aummas_valida_subcapitulo."
  371. RETURN 1
  372. END
  373.  
  374. IF @error <> 0
  375. BEGIN
  376. SELECT @desc_error = "Nomen: " + isnull(convert(varchar(15), @nomen), "") +
  377. " Capitulo: " + @capitulo + " Subcapitulo: " + @subcapitulo
  378.  
  379. EXEC @rtn = pri_aum_mas_err_arch @id_job = @job,
  380. @item = @item,
  381. @id_error = @error,
  382. @descripcion = @desc_error
  383.  
  384. IF @rtn <> 0
  385. BEGIN
  386. CLOSE cur_archivo
  387. DEALLOCATE CURSOR cur_archivo
  388. RETURN 1
  389. END
  390. SELECT @estado_reg = 10, @con_error = 1
  391. END
  392. END
  393.  
  394. UPDATE aumen_masivo_det_archivo
  395. SET id_estado = @estado_reg,
  396. fecha_estado = getdate()
  397. WHERE CURRENT OF cur_archivo
  398.  
  399. SELECT @error = @@error
  400. IF @error <> 0
  401. BEGIN
  402. raiserror 99999 "Error al cambiar el estado del registro."
  403. RETURN 1
  404. END
  405. END
  406.  
  407. CLOSE cur_archivo
  408. DEALLOCATE CURSOR cur_archivo
  409.  
  410. IF @con_error = 0
  411. SELECT @estado_job = 3
  412. ELSE
  413. SELECT @estado_job = 2
  414.  
  415. UPDATE jobs_aumento_masivo_convenio
  416. SET id_estado = @estado_job,
  417. fecha_estado = getdate(),
  418. modi_fecha = getdate()
  419. WHERE id_job = @job
  420.  
  421. SELECT @error = @@error
  422. IF @error <> 0
  423. BEGIN
  424. raiserror 99999 "Error al cambiar el estado de la Tarea."
  425. RETURN 1
  426. END
  427.  
  428. RETURN 0
  429. END
  430.  
  431. EXEC sp_procxmode 'dbo.pru_valida_archivo_aumento','unchained'
Add Comment
Please, Sign In to add comment