Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DELIMITER //
- create function dba.fn_atl_sap_fac_cos(COD_CLI_FAC bigint(30), ID_FAC bigint(30)) returns text
- begin
- # Variables parar recuperar datos de la tabla FAC_PAR.
- DECLARE xCEN_BEN CHAR(10);
- DECLARE xCOS_CTA_1 CHAR(10);
- DECLARE xCOS_PRE_1 DECIMAL(8, 2);
- DECLARE xCECO_CTA_1 CHAR(10);
- DECLARE xCOS_CTA_2 CHAR(10);
- DECLARE xCOS_PRE_2 DECIMAL(8, 2);
- DECLARE xCECO_CTA_2 CHAR(10);
- DECLARE xCOS_CTA_3 CHAR(10);
- DECLARE xCOS_PRE_3 DECIMAL(8, 2);
- DECLARE xCECO_CTA_3 CHAR(10);
- DECLARE xCOS_CTA_4 CHAR(10);
- DECLARE xCOS_PRE_4 DECIMAL(8, 2);
- DECLARE xCECO_CTA_4 CHAR(10);
- DECLARE xCOS_CTA_5 CHAR(10);
- DECLARE xCOS_PRE_5 DECIMAL(8, 2);
- DECLARE xCECO_CTA_5 CHAR(10);
- DECLARE sum_CAN_LIN_FAC INT;
- DECLARE id_iva_sap char(2);
- # Variables de Trabajo
- DECLARE numero int;
- # Variable de retorno.
- DECLARE return_Coste text;
- DECLARE tmp_Var VARCHAR(500);
- DECLARE tmp_Importe DECIMAL(8, 2);
- declare ERRORSQL int;
- DECLARE csr_LIN_FAC_PAR CURSOR FOR
- SELECT
- concat('T01' , SPACE(10-length('T01'))), # okk
- concat(replace(space(10-length(l.COS_CTA_1)), ' ', '0') , l.COS_CTA_1),
- l.COS_PRE_1,
- concat('VTAS',replace(space(10-length('VTAS')), ' ', ' ')) ceco1,
- concat(replace(space(10-length(l.COS_CTA_2)), ' ', '0') , l.COS_CTA_2),
- l.COS_PRE_2,
- concat('VTAS',replace(space(10-length('VTAS')), ' ', ' ')) ceco2,
- concat(replace(space(10-length(l.COS_CTA_3)), ' ', '0') , l.COS_CTA_3),
- l.COS_PRE_3,
- concat('VTAS',replace(space(10-length('VTAS')), ' ', ' ')) ceco3,
- concat(replace(space(10-length(l.COS_CTA_4)), ' ', '0') , l.COS_CTA_4),
- COS_PRE_4,
- concat('VTAS',replace(space(10-length('VTAS')), ' ', ' ')) ceco4,
- concat(replace(space(10-length(l.COS_CTA_5)), ' ', '0') , l.COS_CTA_5),
- l.COS_PRE_5,
- concat('VTAS' , replace(space(10-length('VTAS')), ' ', ' ')) ceco5,
- SUM(l.CAN_LIN_FAC),
- concat(replace(space(2-length((select id_iva_sap from iva where iva.id_iva = l.id_iva))), ' ', ' ') ,
- (select id_iva_sap from iva where iva.id_iva = l.id_iva)) as id_iva_sap
- FROM lin_fac_par l left outer join cta_cos c1 on l.cos_cod_cta_1 = c1.cod_cta
- left outer join cta_cos c2 on l.cos_cod_cta_2 = c2.cod_cta
- left outer join cta_cos c3 on l.cos_cod_cta_3 = c3.cod_cta
- left outer join cta_cos c4 on l.cos_cod_cta_4 = c4.cod_cta
- left outer join cta_cos c5 on l.cos_cod_cta_5 = c5.cod_cta
- WHERE l.ID_FAC = ID_FAC
- GROUP BY
- l.CEN_BEN,
- l.COS_CTA_1,
- l.COS_PRE_1,
- ceco1,
- l.COS_CTA_2,
- l.COS_PRE_2,
- ceco2,
- l.COS_CTA_3,
- l.COS_PRE_3,
- ceco3,
- l.COS_CTA_4,
- l.COS_PRE_4,
- ceco4,
- l.COS_CTA_5,
- l.COS_PRE_5,
- ceco5,
- id_iva_sap;
- DECLARE EXIT handler for sqlexception SET ERRORSQL = -1;
- # Inicializar las variables de trabajo.
- set return_Coste = '';
- set numero = 0;
- open csr_LIN_FAC_PAR;
- get_LIN_FAN_PAC: loop
- #IF ERRORSQL =-1 THEN
- #close csr_LIN_FAC_PAR;
- #END IF;
- 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,
- xCOS_CTA_3, xCOS_PRE_3, xCECO_CTA_3, xCOS_CTA_4, xCOS_PRE_4, xCECO_CTA_4, xCOS_CTA_5,
- xCOS_PRE_5, xCECO_CTA_5, sum_CAN_LIN_FAC,id_iva_sap;
- # SI HAY CUENTA DE COSTE 1
- IF COS_CTA_1 <> '' THEN
- SET numero = numero + 1;
- SET tmp_Importe = sum_CAN_LIN_FAC * COS_PRE_1;
- SET tmp_VAR = CONCAT(COS_CTA_1 , id_iva_sap , vCEN_BEN ,
- replace(space(15-length(convert(sum_CAN_LIN_FAC,UNSIGNED INTEGER))), ' ', '0'),convert(sum_CAN_LIN_FAC,UNSIGNED INTEGER) ,
- 'UN ' ,
- replace(space(15-length(convert(tmp_Importe*100,UNSIGNED INTEGER))), ' ', '0'),convert(tmp_Importe*100,UNSIGNED INTEGER),
- CECO_CTA_1);
- SET return_Coste = CONCAT(return_Coste,'A2', tmp_VAR , ';');
- END IF;
- # SI HAY CUENTA DE COSTE 2
- IF COS_CTA_2 <> '' THEN
- SET numero = numero + 1;
- SET tmp_Importe = sum_CAN_LIN_FAC * COS_PRE_2;
- SET tmp_VAR = CONCAT(COS_CTA_2 , id_iva_sap , vCEN_BEN ,
- replace(space(15-length(convert(sum_CAN_LIN_FAC,UNSIGNED INTEGER))), ' ', '0'),convert(sum_CAN_LIN_FAC,UNSIGNED INTEGER) ,
- 'UN ' ,
- replace(space(15-length(convert(tmp_Importe*100,UNSIGNED INTEGER))), ' ', '0'),convert(tmp_Importe*100,UNSIGNED INTEGER),
- CECO_CTA_2);
- SET return_Coste = CONCAT(return_Coste,'A2', tmp_VAR , ';');
- END IF;
- # SI HAY CUENTA DE COSTE 3
- IF COS_CTA_3 <> '' THEN
- SET numero=numero + 1;
- SET tmp_Importe = sum_CAN_LIN_FAC * COS_PRE_3;
- SET tmp_VAR = CONCAT(COS_CTA_3 , id_iva_sap , vCEN_BEN ,
- replace(space(15-length(convert(sum_CAN_LIN_FAC,UNSIGNED INTEGER))), ' ', '0'),convert(sum_CAN_LIN_FAC,UNSIGNED INTEGER) ,
- 'UN ' ,
- replace(space(15-length(convert(tmp_Importe*100,UNSIGNED INTEGER))), ' ', '0'),convert(tmp_Importe*100,UNSIGNED INTEGER),
- CECO_CTA_3);
- SET return_Coste = CONCAT(return_Coste,'A2', tmp_VAR , ';');
- END IF;
- # SI HAY CUENTA DE COSTE 4
- IF COS_CTA_4 <> '' THEN
- SET numero = numero + 1;
- SET tmp_Importe = sum_CAN_LIN_FAC * COS_PRE_4;
- SET tmp_VAR = concat(COS_CTA_4 , id_iva_sap , vCEN_BEN ,
- replace(space(15-length(convert(sum_CAN_LIN_FAC,UNSIGNED INTEGER))), ' ', '0'),convert(sum_CAN_LIN_FAC,UNSIGNED INTEGER) ,
- 'UN ' ,
- replace(space(15-length(convert(tmp_Importe*100,UNSIGNED INTEGER))), ' ', '0'),convert(tmp_Importe*100,UNSIGNED INTEGER),
- CECO_CTA_4);
- SET return_Coste = concat(return_Coste,'A2', tmp_VAR , ';');
- END IF;
- # SI HAY CUENTA DE COSTE 5
- IF COS_CTA_5 <> '' THEN
- SET numero = numero + 1;
- SET tmp_Importe = sum_CAN_LIN_FAC * COS_PRE_5;
- SET tmp_VAR = CONCAT(COS_CTA_5 , id_iva_sap , vCEN_BEN ,
- replace(space(15-length(convert(sum_CAN_LIN_FAC,UNSIGNED INTEGER))), ' ', '0'),convert(sum_CAN_LIN_FAC,UNSIGNED INTEGER) ,
- 'UN ' ,
- replace(space(15-length(convert(tmp_Importe*100,UNSIGNED INTEGER))), ' ', '0'),convert(tmp_Importe*100,UNSIGNED INTEGER),
- CECO_CTA_5);
- SET return_Coste = CONCAT(return_Coste,'A2', tmp_VAR , ';');
- END IF;
- /* 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,
- COS_CTA_3, COS_PRE_3, CECO_CTA_3, COS_CTA_4, COS_PRE_4, CECO_CTA_4,COS_CTA_5,
- COS_PRE_5, CECO_CTA_5, sum_CAN_LIN_FAC, id_iva_sap;*/
- end loop get_LIN_FAN_PAC;
- close csr_LIN_FAC_PAR;
- #set return_Coste = 'TEST';
- RETURN return_Coste;
- end;
Add Comment
Please, Sign In to add comment