Advertisement
Guest User

Untitled

a guest
Apr 12th, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 2.39 KB | None | 0 0
  1. CREATE OR REPLACE PROCEDURE PAYMENT_COMISION AS
  2. PARTY_ID NUMBER(38,0);
  3. GENDER PARTY.GENDER%TYPE;
  4. ORG NVARCHAR2(2 CHAR);
  5. FECHA_APROBACION DATE;
  6. SALE_ID NUMBER(38,0);
  7. LEGACY_NUMBER NUMBER(38,0);
  8. CURSOR APROBADOS IS SELECT * FROM CLIENTES_INACTIVOS_APROBADOS;
  9. BEGIN
  10.     FOR CLIENTE IN APROBADOS
  11.         LOOP
  12.             BEGIN
  13.                 --TRADUCCION DE GENERO
  14.                 IF CLIENTE.SEXO = 'M' THEN
  15.                     GENDER := 'MALE';
  16.                 ELSE
  17.                     GENDER := 'FEMALE';
  18.                 END IF;
  19.                
  20.                 --TRADUCCION DE ORGANIZACION
  21.                 IF CLIENTE.ORGANIZACION = '1-GARBARINO S.A.I.C e I' THEN
  22.                     ORG := 'G';
  23.                 ELSE
  24.                     ORG := 'C';
  25.                 END IF;  
  26.                
  27.                 --CAST FECHA DE APROBACION
  28.                 FECHA_APROBACION := TRUNC(TO_TIMESTAMP(CLIENTE.FECHA_APROBACION, 'MM-DD-YYYY'));
  29.                      
  30.                 --OBTENCION DEL PARTY A PARTIR DEL DOCUMENTO,GENERO Y ORGANIZACION
  31.                 SELECT P.ID INTO PARTY_ID
  32.                 FROM TEK_COMMON.PARTY P
  33.                 JOIN TEK_CUSTOMER.CUSTOMER C
  34.                 ON P.ID = C.PARTY_ID
  35.                 WHERE P.ID_VALUE = CLIENTE.DOCUMENTO AND P.GENDER = GENDER AND C.ORG = ORG;
  36.                
  37.                 --OBTENCION DE LA PRIMERA NVI SI COINCIDE SU FECHA DE APROBACION
  38.                 SELECT S.ID, S.LEGACY_NUMBER INTO SALE_ID, LEGACY_NUMBER
  39.                 FROM TEK_POS.SALE S
  40.                 WHERE S.CUSTOMER_PARTY_ID = PARTY_ID AND FECHA_APROBACION = TRUNC(S.BILL_DATE)
  41.                 ORDER BY S.CREATION_TIME;
  42.                
  43.                 IF SALE_ID IS NOT NULL AND LEGACY_NUMBER IS NOT NULL THEN
  44.                     UPDATE CLIENTES_INACTIVOS_APROBADOS CI SET CI.SALE_ID=SALE_ID, CI.LEGACY_NUMBER=LEGACY_NUMBER  WHERE CLIENTE.DOCUMENTO = CI.DOCUMENTO;
  45.                 END IF;    
  46.                
  47.                 EXCEPTION WHEN NO_DATA_FOUND THEN
  48.                     UPDATE CLIENTES_INACTIVOS_APROBADOS CI SET CI.SALE_ID=-1, CI.LEGACY_NUMBER=-1  WHERE CLIENTE.DOCUMENTO = CI.DOCUMENTO;
  49.                 WHEN TOO_MANY_ROWS THEN
  50.                     UPDATE CLIENTES_INACTIVOS_APROBADOS CI SET CI.SALE_ID=-2, CI.LEGACY_NUMBER=-2  WHERE CLIENTE.DOCUMENTO = CI.DOCUMENTO;
  51.                    
  52.             END;
  53.         END LOOP;    
  54.   NULL;
  55. END PAYMENT_COMISION;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement