Guest User

Untitled

a guest
Sep 26th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.63 KB | None | 0 0
  1. DELIMITER //
  2. create function dba.fn_atl_sap_fac_cos(COD_CLI_FAC bigint(30), ID_FAC bigint(30)) returns text
  3.  
  4. begin
  5. # Variables parar recuperar datos de la tabla FAC_PAR.
  6. DECLARE xCEN_BEN CHAR(10);
  7. DECLARE xCOS_CTA_1 CHAR(10);
  8. DECLARE xCOS_PRE_1 DECIMAL(8, 2);
  9. DECLARE xCECO_CTA_1 CHAR(10);
  10. DECLARE xCOS_CTA_2 CHAR(10);
  11. DECLARE xCOS_PRE_2 DECIMAL(8, 2);
  12. DECLARE xCECO_CTA_2 CHAR(10);
  13. DECLARE xCOS_CTA_3 CHAR(10);
  14. DECLARE xCOS_PRE_3 DECIMAL(8, 2);
  15. DECLARE xCECO_CTA_3 CHAR(10);
  16. DECLARE xCOS_CTA_4 CHAR(10);
  17. DECLARE xCOS_PRE_4 DECIMAL(8, 2);
  18. DECLARE xCECO_CTA_4 CHAR(10);
  19. DECLARE xCOS_CTA_5 CHAR(10);
  20. DECLARE xCOS_PRE_5 DECIMAL(8, 2);
  21. DECLARE xCECO_CTA_5 CHAR(10);
  22. DECLARE sum_CAN_LIN_FAC INT;
  23. DECLARE id_iva_sap char(2);
  24. # Variables de Trabajo
  25. DECLARE numero int;
  26. # Variable de retorno.
  27. DECLARE return_Coste text;
  28. DECLARE tmp_Var VARCHAR(500);
  29. DECLARE tmp_Importe DECIMAL(8, 2);
  30. declare ERRORSQL int;
  31.  
  32.  
  33.  
  34. DECLARE csr_LIN_FAC_PAR CURSOR FOR
  35. SELECT
  36. concat('T01' , SPACE(10-length('T01'))), # okk
  37.  
  38. concat(replace(space(10-length(l.COS_CTA_1)), ' ', '0') , l.COS_CTA_1),
  39.  
  40. l.COS_PRE_1,
  41.  
  42. concat('VTAS',replace(space(10-length('VTAS')), ' ', ' ')) ceco1,
  43.  
  44. concat(replace(space(10-length(l.COS_CTA_2)), ' ', '0') , l.COS_CTA_2),
  45.  
  46. l.COS_PRE_2,
  47.  
  48. concat('VTAS',replace(space(10-length('VTAS')), ' ', ' ')) ceco2,
  49.  
  50. concat(replace(space(10-length(l.COS_CTA_3)), ' ', '0') , l.COS_CTA_3),
  51.  
  52. l.COS_PRE_3,
  53.  
  54. concat('VTAS',replace(space(10-length('VTAS')), ' ', ' ')) ceco3,
  55.  
  56. concat(replace(space(10-length(l.COS_CTA_4)), ' ', '0') , l.COS_CTA_4),
  57.  
  58. COS_PRE_4,
  59.  
  60. concat('VTAS',replace(space(10-length('VTAS')), ' ', ' ')) ceco4,
  61.  
  62. concat(replace(space(10-length(l.COS_CTA_5)), ' ', '0') , l.COS_CTA_5),
  63.  
  64. l.COS_PRE_5,
  65.  
  66. concat('VTAS' , replace(space(10-length('VTAS')), ' ', ' ')) ceco5,
  67.  
  68. SUM(l.CAN_LIN_FAC),
  69.  
  70. concat(replace(space(2-length((select id_iva_sap from iva where iva.id_iva = l.id_iva))), ' ', ' ') ,
  71. (select id_iva_sap from iva where iva.id_iva = l.id_iva)) as id_iva_sap
  72.  
  73. FROM lin_fac_par l left outer join cta_cos c1 on l.cos_cod_cta_1 = c1.cod_cta
  74. left outer join cta_cos c2 on l.cos_cod_cta_2 = c2.cod_cta
  75. left outer join cta_cos c3 on l.cos_cod_cta_3 = c3.cod_cta
  76. left outer join cta_cos c4 on l.cos_cod_cta_4 = c4.cod_cta
  77. left outer join cta_cos c5 on l.cos_cod_cta_5 = c5.cod_cta
  78. WHERE l.ID_FAC = ID_FAC
  79. GROUP BY
  80. l.CEN_BEN,
  81. l.COS_CTA_1,
  82. l.COS_PRE_1,
  83. ceco1,
  84. l.COS_CTA_2,
  85. l.COS_PRE_2,
  86. ceco2,
  87. l.COS_CTA_3,
  88. l.COS_PRE_3,
  89. ceco3,
  90. l.COS_CTA_4,
  91. l.COS_PRE_4,
  92. ceco4,
  93. l.COS_CTA_5,
  94. l.COS_PRE_5,
  95. ceco5,
  96. id_iva_sap;
  97.  
  98. DECLARE EXIT handler for sqlexception SET ERRORSQL = -1;
  99. # Inicializar las variables de trabajo.
  100. set return_Coste = '';
  101. set numero = 0;
  102.  
  103. open csr_LIN_FAC_PAR;
  104.  
  105. get_LIN_FAN_PAC: loop
  106.  
  107. #IF ERRORSQL =-1 THEN
  108. #close csr_LIN_FAC_PAR;
  109. #END IF;
  110.  
  111. FETCH csr_LIN_FAC_PAR into xCEN_BEN, xCOS_CTA_1, xCOS_PRE_1, xCECO_CTA_1, xCOS_CTA_2, xCOS_PRE_2, xCECO_CTA_2,
  112. xCOS_CTA_3, xCOS_PRE_3, xCECO_CTA_3, xCOS_CTA_4, xCOS_PRE_4, xCECO_CTA_4, xCOS_CTA_5,
  113. xCOS_PRE_5, xCECO_CTA_5, sum_CAN_LIN_FAC,id_iva_sap;
  114.  
  115.  
  116. # SI HAY CUENTA DE COSTE 1
  117. IF COS_CTA_1 <> '' THEN
  118. SET numero = numero + 1;
  119. SET tmp_Importe = sum_CAN_LIN_FAC * COS_PRE_1;
  120. SET tmp_VAR = CONCAT(COS_CTA_1 , id_iva_sap , vCEN_BEN ,
  121. replace(space(15-length(convert(sum_CAN_LIN_FAC,UNSIGNED INTEGER))), ' ', '0'),convert(sum_CAN_LIN_FAC,UNSIGNED INTEGER) ,
  122. 'UN ' ,
  123. replace(space(15-length(convert(tmp_Importe*100,UNSIGNED INTEGER))), ' ', '0'),convert(tmp_Importe*100,UNSIGNED INTEGER),
  124. CECO_CTA_1);
  125.  
  126. SET return_Coste = CONCAT(return_Coste,'A2', tmp_VAR , ';');
  127. END IF;
  128.  
  129. # SI HAY CUENTA DE COSTE 2
  130. IF COS_CTA_2 <> '' THEN
  131. SET numero = numero + 1;
  132. SET tmp_Importe = sum_CAN_LIN_FAC * COS_PRE_2;
  133. SET tmp_VAR = CONCAT(COS_CTA_2 , id_iva_sap , vCEN_BEN ,
  134. replace(space(15-length(convert(sum_CAN_LIN_FAC,UNSIGNED INTEGER))), ' ', '0'),convert(sum_CAN_LIN_FAC,UNSIGNED INTEGER) ,
  135. 'UN ' ,
  136. replace(space(15-length(convert(tmp_Importe*100,UNSIGNED INTEGER))), ' ', '0'),convert(tmp_Importe*100,UNSIGNED INTEGER),
  137. CECO_CTA_2);
  138.  
  139. SET return_Coste = CONCAT(return_Coste,'A2', tmp_VAR , ';');
  140. END IF;
  141.  
  142. # SI HAY CUENTA DE COSTE 3
  143. IF COS_CTA_3 <> '' THEN
  144. SET numero=numero + 1;
  145. SET tmp_Importe = sum_CAN_LIN_FAC * COS_PRE_3;
  146. SET tmp_VAR = CONCAT(COS_CTA_3 , id_iva_sap , vCEN_BEN ,
  147. replace(space(15-length(convert(sum_CAN_LIN_FAC,UNSIGNED INTEGER))), ' ', '0'),convert(sum_CAN_LIN_FAC,UNSIGNED INTEGER) ,
  148. 'UN ' ,
  149. replace(space(15-length(convert(tmp_Importe*100,UNSIGNED INTEGER))), ' ', '0'),convert(tmp_Importe*100,UNSIGNED INTEGER),
  150. CECO_CTA_3);
  151.  
  152. SET return_Coste = CONCAT(return_Coste,'A2', tmp_VAR , ';');
  153. END IF;
  154.  
  155. # SI HAY CUENTA DE COSTE 4
  156. IF COS_CTA_4 <> '' THEN
  157. SET numero = numero + 1;
  158. SET tmp_Importe = sum_CAN_LIN_FAC * COS_PRE_4;
  159. SET tmp_VAR = concat(COS_CTA_4 , id_iva_sap , vCEN_BEN ,
  160. replace(space(15-length(convert(sum_CAN_LIN_FAC,UNSIGNED INTEGER))), ' ', '0'),convert(sum_CAN_LIN_FAC,UNSIGNED INTEGER) ,
  161. 'UN ' ,
  162. replace(space(15-length(convert(tmp_Importe*100,UNSIGNED INTEGER))), ' ', '0'),convert(tmp_Importe*100,UNSIGNED INTEGER),
  163. CECO_CTA_4);
  164.  
  165. SET return_Coste = concat(return_Coste,'A2', tmp_VAR , ';');
  166. END IF;
  167.  
  168. # SI HAY CUENTA DE COSTE 5
  169. IF COS_CTA_5 <> '' THEN
  170. SET numero = numero + 1;
  171. SET tmp_Importe = sum_CAN_LIN_FAC * COS_PRE_5;
  172. SET tmp_VAR = CONCAT(COS_CTA_5 , id_iva_sap , vCEN_BEN ,
  173. replace(space(15-length(convert(sum_CAN_LIN_FAC,UNSIGNED INTEGER))), ' ', '0'),convert(sum_CAN_LIN_FAC,UNSIGNED INTEGER) ,
  174. 'UN ' ,
  175. replace(space(15-length(convert(tmp_Importe*100,UNSIGNED INTEGER))), ' ', '0'),convert(tmp_Importe*100,UNSIGNED INTEGER),
  176. CECO_CTA_5);
  177.  
  178. SET return_Coste = CONCAT(return_Coste,'A2', tmp_VAR , ';');
  179. END IF;
  180.  
  181. /* FETCH csr_LIN_FAC_PAR into CEN_BEN, COS_CTA_1, COS_PRE_1, CECO_CTA_1, COS_CTA_2, COS_PRE_2, CECO_CTA_2,
  182. COS_CTA_3, COS_PRE_3, CECO_CTA_3, COS_CTA_4, COS_PRE_4, CECO_CTA_4,COS_CTA_5,
  183. COS_PRE_5, CECO_CTA_5, sum_CAN_LIN_FAC, id_iva_sap;*/
  184.  
  185. end loop get_LIN_FAN_PAC;
  186. close csr_LIN_FAC_PAR;
  187.  
  188. #set return_Coste = 'TEST';
  189.  
  190. RETURN return_Coste;
  191.  
  192. end;
Add Comment
Please, Sign In to add comment