Advertisement
pipook

Funcion 2

Apr 19th, 2011
315
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Oracle 8 15.50 KB | None | 0 0
  1. CREATE OR REPLACE FUNCTION LLEVAR_KARDEX (
  2.     --
  3.     -- NUEVOS PARAMETROS
  4.     --
  5.     CONTROL_BODEGA IN VARCHAR2, CONTROL_BODEGA2 IN VARCHAR2, GLOBAL_EMPRESA IN VARCHAR2, GLOBAL_USUARIO_SP6 IN VARCHAR2, CONTROL_C_COS IN VARCHAR2,
  6.     CONTROL_FECHA_RECIBIDO IN VARCHAR2, CONTROL_C_CLA IN VARCHAR2, CONTROL_N_IDE IN VARCHAR2, CONTROL_C_CTA_PUENTE IN VARCHAR2,
  7.     CONTROL_VAL_PARAM1 IN VARCHAR2, CONTROL_PARAM1 IN VARCHAR2, CONTROL_PARAM2 IN VARCHAR2,
  8.     CONTROL_VAL_PARAM2 IN VARCHAR2, CONTROL_PARAM3 IN VARCHAR2, CONTROL_VAL_PARAM3 IN VARCHAR2, CONTROL_OPE IN VARCHAR2)
  9.     RETURN VARCHAR2 IS
  10.  
  11.     RETORNO VARCHAR2(200);
  12.  
  13.     --
  14.     -- SE PASAN SOLO REGISTROS QUE SEAN DE LA BODEGA Y ADEMAS NO SEAN DE RECIBO DE
  15.     -- MEDICAMENTO (RM)
  16.     -- EL ESTADO A CONTROL QUE SE PASEN SOLO AQUELLOS QUE NO SE HAN PASADO
  17.     -- Y AQUELLOS QUE NO SE HAN ANULADO
  18.     --
  19.  
  20. CURSOR KK IS
  21.         SELECT BOD,COD,FECHA,HORA,
  22.                CAN,FUE,N_FUE,OPE,LOTE,ESTADO
  23.           FROM PE_KARDEX
  24.          WHERE BOD=CONTROL_BODEGA
  25.            AND FUE<>'RM'
  26.            AND ESTADO='A'
  27.        AND OPE=CONTROL_OPE
  28.         ORDER BY COD,TO_CHAR(FECHA,'YYYYMMDD'),TO_CHAR(HORA,'YYYYMMDD HH24:MI:SS');      
  29.   --   
  30.   A       KK%ROWTYPE;
  31.   --
  32.     UNIDAD_PE     ARTICULO.UNI%TYPE;
  33.     UNIDAD_CEN    ARTICULO.UNI%TYPE;
  34.     FACT          FACTOR.FAC%TYPE;
  35.     COSTO_UNI     COSTO_ART.C_PPO%TYPE;
  36.  
  37.     HUBO_ERROR   EXCEPTION;
  38.   SALTO_LOOP   EXCEPTION;
  39.     XCOSTO_ART   COSTO_ART.C_PPO%TYPE;
  40.     CERR         NUMBER(4);
  41.     MERR         VARCHAR2(2000);
  42.     XMON         MONEDA.MON%TYPE;
  43.     XN_FUE       KARDEX.N_FUE%TYPE;
  44.     NUM_CPTE     CPTE_ENC.CPTE%TYPE;
  45.     CUENTA_INV   PLAN_CTA.C_CTA%TYPE;
  46.     CUENTA_CONT  PLAN_CTA.C_CTA%TYPE;
  47.     XREQ1        CPTE_DET.REQ1%TYPE;
  48.     XREQ2            CPTE_DET.REQ3%TYPE;
  49.     XREQ3        CPTE_DET.REQ3%TYPE;
  50.     XREQ4                CPTE_DET.REQ4%TYPE;
  51.     XC_COS       CPTE_DET.C_COS%TYPE;
  52.     XSEQ         CPTE_DET.SEQ%TYPE;
  53.     TOTAL_CPTE   CPTE_ENC.TOTDEB%TYPE;
  54.     CONTROL_FECHA DATE;
  55.     N_FUE_CRUCE VARCHAR2(2000);
  56.     NUMERROR NUMBER;
  57.   CONTER NUMBER;
  58.   CONTER2 NUMBER;
  59.  
  60. BEGIN
  61.     CONTROL_FECHA := TO_DATE(CONTROL_FECHA_RECIBIDO);
  62.     NUMERROR:=0;
  63.   CONTER:=0;
  64.   CONTER2:=0;
  65.     --
  66.     -- NOS TRAEMOS LA MONEDA POR DEFECTO...
  67.     --
  68.     BEGIN
  69.        SELECT MON
  70.          INTO XMON
  71.          FROM MONEDA
  72.         WHERE C_EMP=GLOBAL_EMPRESA
  73.           AND M_DEFAULT='S';
  74.     EXCEPTION
  75.     WHEN OTHERS THEN
  76.       CERR:=1;
  77.       MERR:='Problemas al traer la moneda por defecto. '||SQLERRM;
  78.       RETURN MERR;
  79.       RAISE HUBO_ERROR;
  80.     END;
  81.     -- FIN CONSULTA MONEDA
  82.  
  83.   OPEN KK;
  84.   LOOP
  85.     FETCH KK INTO A;
  86.     EXIT WHEN KK%NOTFOUND; -- Último registro.
  87.     --------------------------------
  88.     BEGIN
  89.         --
  90.         -- LA UNIDAD QUE SE TRAE ES LA UNIDAD ALTERNA DEL ARTICULO
  91.         --
  92.             BEGIN
  93.                 SELECT VAL_DEF
  94.                 INTO UNIDAD_PE
  95.                 FROM ART_ATRIB
  96.                 WHERE C_EMP=GLOBAL_EMPRESA
  97.                 AND COD_ART=A.COD
  98.                 AND COD_ATR='UALT';
  99.             EXCEPTION
  100.                 WHEN NO_DATA_FOUND THEN
  101.                     MERR:='No se encontró el codigo del articulo : '||A.cod;                  
  102.                     RAISE SALTO_LOOP;
  103.             END;
  104.  
  105.             -- INICIO KJM
  106.             -- SE BUSCA UNIDAD ORIGINAL DEL ARTICULO
  107.                 BEGIN
  108.                     SELECT  UNI
  109.                     INTO    UNIDAD_CEN
  110.                     FROM    ARTICULO
  111.                     WHERE   C_EMP=GLOBAL_EMPRESA
  112.                     AND     COD=A.COD;
  113.                 EXCEPTION
  114.                     WHEN NO_DATA_FOUND THEN
  115.                         MERR:='No se encontró La Unidad del Articulo : '||A.cod;                      
  116.                         RAISE SALTO_LOOP;
  117.                 END;
  118.                 -- FIN KJM
  119.  
  120.  
  121.                 --
  122.                 -- AHORA NOS TRAEMOS EL COSTO DEL ARTICULO
  123.                 --
  124.                     XCOSTO_ART:=INVTRAECOSTO(GLOBAL_EMPRESA,CONTROL_BODEGA,TO_CHAR(A.FECHA,'YYYYMM'),A.COD,CERR,MERR);
  125.  
  126.                     IF CERR<>0 THEN
  127.                         MERR:='Error al momento de traer el costo del articulo '||SQLERRM;                     
  128.                         RAISE SALTO_LOOP;
  129.                     END IF;
  130.  
  131.                     -- INICIO KJM
  132.                         IF(UNIDAD_PE<>UNIDAD_CEN)THEN
  133.                             BEGIN
  134.                                 SELECT  FAC
  135.                                 INTO    FACT
  136.                                 FROM    FACTOR
  137.                                 WHERE   C_EMP=GLOBAL_EMPRESA
  138.                                     AND  UNI1=UNIDAD_CEN
  139.                                     AND  UNI2=UNIDAD_PE;
  140.                             EXCEPTION
  141.                                 WHEN NO_DATA_FOUND THEN
  142.                                     MERR:='No se encontró El Factor De Conversión de la Unidad : '||UNIDAD_CEN ||' A La Unidad : '||UNIDAD_PE;                                   
  143.                                     RAISE SALTO_LOOP;
  144.                             END;
  145.  
  146.                             IF(FACT = 0)THEN
  147.                                 FACT:=1;
  148.                             END IF;
  149.  
  150.                             COSTO_UNI:=XCOSTO_ART/FACT;
  151.  
  152.                         ELSE
  153.                             --SI LA UNIDAD DEFINIDA EN LA TABLA ARTI ES IGUAL A LA UNIDAD ALTERNA
  154.                             COSTO_UNI:=XCOSTO_ART;
  155.                         END IF;
  156.                         --FIN KJM
  157.  
  158.                         --
  159.                         -- POR ULTIMO SE INSERTA EN KARDEX
  160.                         --
  161.                             BEGIN
  162.                                 XN_FUE:=CONSECINV(GLOBAL_EMPRESA,A.FUE,TO_CHAR(A.FECHA,'YYYYMM'),CONTROL_BODEGA);
  163.                             EXCEPTION
  164.                                 WHEN OTHERS THEN
  165.                                     MERR:='Problemas al traer el consecutivo de el fuente : '||A.FUE||'. Mensaje de Error : '||SQLERRM;                                
  166.                                     RAISE SALTO_LOOP;
  167.                             END;
  168.  
  169.                                 BEGIN
  170.                                     INSERT INTO KARDEX
  171.                                     (C_EMP,BOD,PER,
  172.                                     COD,OPE,CAN,
  173.                                     UNI,P_ENT,M_ENT,
  174.                                     P_SAL,M_SAL,TAS,
  175.                                     FEC,FUE,
  176.                                     N_FUE,OBSER,RESP,
  177.                                     SEC,BOD2,LOTE,C_ARE,
  178.                                     HORA,AQ_APL,N_APL)
  179.                                     VALUES
  180.                                     (GLOBAL_EMPRESA,CONTROL_BODEGA,TO_CHAR(A.FECHA,'YYYYMM'),
  181.                                     A.COD,A.OPE,A.CAN,
  182.                                     UNIDAD_PE,DECODE(A.OPE,'E',COSTO_UNI,'S',NULL),DECODE(A.OPE,'E',XMON,'S',NULL),
  183.                                     DECODE(A.OPE,'S',COSTO_UNI,'E',NULL),DECODE(A.OPE,'S',XMON,'E',NULL),1,
  184.                                     A.FECHA,A.FUE,
  185.                                     XN_FUE,'KARDEX DE PUNTO DE ENTREGA FUENTE '||A.FUE||'. NUMERO ORIGINAL '||A.N_FUE,GLOBAL_USUARIO_SP6,
  186.                                     1,CONTROL_BODEGA2,A.LOTE,CONTROL_C_COS,
  187.                                     A.HORA,A.FUE,XN_FUE);
  188.                                 EXCEPTION
  189.                                     WHEN OTHERS THEN
  190.                                         MERR:='Problemas al insertar en kardex. Fuente : '||A.fue||'. Movimiento en el punto de entrega: '||A.n_fue||'. Movimiento a generar en Kardex : '||xn_fue||'. Mensaje de Error : '||SQLERRM;                                      
  191.                                         RAISE SALTO_LOOP;
  192.                                 END;
  193.  
  194.  
  195.  
  196.                                 --
  197.                                 -- GENERAMOS EL COMPROBANTE CONTABLE
  198.                                 --
  199.                                     IF NUM_CPTE IS NULL THEN
  200.                                         NUM_CPTE:=CONSEC_CONTABLE(GLOBAL_EMPRESA, CONTROL_FECHA_RECIBIDO, CONTROL_C_CLA);
  201.  
  202.                                    
  203.                                         BEGIN
  204.                                             INSERT INTO CPTE_ENC
  205.                                             (C_EMP,PER,C_CLA,CPTE,
  206.                                             CLCONS,FEC,DES,EST,
  207.                                             RESP,USR,TOTDEB,TOTCRE)
  208.                                             VALUES
  209.                                             (GLOBAL_EMPRESA,TO_CHAR(CONTROL_FECHA,'YYYYMM'),CONTROL_C_CLA,NUM_CPTE,
  210.                                             NUM_CPTE,CONTROL_FECHA,'COMPROBANTE GENERADO PARA EL PUNTO DE ENTREGA : '||CONTROL_BODEGA,'J',
  211.                                             GLOBAL_USUARIO_SP6,GLOBAL_USUARIO_SP6,0,0);
  212.                                         EXCEPTION
  213.                                             WHEN OTHERS THEN
  214.                                                 RETORNO := 'No se pudo generar el comprobante contable. Mensaje : '||SQLERRM;
  215.                                                 MERR:=RETORNO;                                             
  216.                                                 RAISE SALTO_LOOP;
  217.                                                 --RETURN RETORNO;
  218.                                                 --DESHACER;
  219.                                                 --RAISE FORM_TRIGGER_FAILURE;
  220.                                         END;
  221.                                     END IF;
  222.  
  223.                                     CERR:=0;
  224.                                     CUENTAS (A.COD, CUENTA_INV, CUENTA_CONT, CERR, MERR,
  225.                                     --
  226.                                     --NUEVOS PARAMETROS
  227.                                     --
  228.                                     GLOBAL_EMPRESA, CONTROL_VAL_PARAM1, CONTROL_PARAM1, CONTROL_PARAM2, CONTROL_VAL_PARAM2,
  229.                                     CONTROL_PARAM3, CONTROL_VAL_PARAM3);
  230.  
  231.                                     IF CERR<>0 THEN
  232.                                         RETORNO := MERR;
  233.                                         --RAISE FORM_TRIGGER_FAILURE;
  234.                                     END IF;
  235.  
  236.                                         TOTAL_CPTE:=NVL(TOTAL_CPTE,0)+(A.CAN*COSTO_UNI);
  237.                                    
  238.                                         IF A.OPE='S' THEN
  239.                                             IF (CUENTA_INV IS NOT NULL) AND (CUENTA_CONT IS NOT NULL) THEN
  240.                                                 ANALIZA_REQS (CUENTA_INV,XN_FUE,A.CAN*COSTO_UNI,CONTROL_N_IDE,XREQ1,XREQ2,XREQ3,XREQ3,XC_COS,
  241.                                                 --
  242.                                                 --NUEVOS PARAMETROS
  243.                                                 --
  244.                                                 CONTROL_C_COS, GLOBAL_EMPRESA);
  245.  
  246.                                                 XSEQ:=NVL(XSEQ,0)+1;
  247.                                                 --
  248.                                                 -- SALIDA --> ACREDITA LA CUENTA DE INVENTARIOS
  249.                                                 --
  250.                                                 BEGIN
  251.                                                     INSERT INTO CPTE_DET
  252.                                                     (C_EMP,PER,C_CLA,CPTE,
  253.                                                     SEQ,FEC,C_CTA,C_COS,
  254.                                                     REQ1,REQ2,REQ3,REQ4,
  255.                                                     CR,DB,DES)
  256.                                                     VALUES
  257.                                                     (GLOBAL_EMPRESA,TO_CHAR(CONTROL_FECHA,'YYYYMM'),CONTROL_C_CLA,NUM_CPTE,
  258.                                                     XSEQ,CONTROL_FECHA,CUENTA_INV,XC_COS,
  259.                                                     XREQ1,XREQ2,XREQ3,XREQ4,
  260.                                                     A.CAN*COSTO_UNI,0,'Bodega : '||CONTROL_BODEGA||'. Movimiento Fuente : '||A.fue||'. Numero : '||xn_fue);
  261.                                                 EXCEPTION
  262.                                                     WHEN OTHERS THEN
  263.                                                         RETORNO := 'Problemas al insertar la cuenta contable. '||SQLERRM;
  264.                                                         MERR:=RETORNO;                                                     
  265.                                                         RAISE SALTO_LOOP;
  266.                                                 END;
  267.  
  268.                                                 --
  269.                                                 -- AHORA SE INSERTA LA CONTRAPARTIDA
  270.                                                 --
  271.                                                 ANALIZA_REQS (CUENTA_CONT,XN_FUE,A.CAN*COSTO_UNI,CONTROL_N_IDE,XREQ1,XREQ2,XREQ3,XREQ3,XC_COS,
  272.                                                 --
  273.                                                 --NUEVOS PARAMETROS
  274.                                                 --
  275.                                                 CONTROL_C_COS, GLOBAL_EMPRESA);
  276.  
  277.                                                 XSEQ:=NVL(XSEQ,0)+1;
  278.                                                     BEGIN
  279.                                                         INSERT INTO CPTE_DET
  280.                                                         (C_EMP,PER,C_CLA,CPTE,
  281.                                                         SEQ,FEC,C_CTA,C_COS,
  282.                                                         REQ1,REQ2,REQ3,REQ4,
  283.                                                         CR,DB,DES)
  284.                                                         VALUES
  285.                                                         (GLOBAL_EMPRESA,TO_CHAR(CONTROL_FECHA,'YYYYMM'),CONTROL_C_CLA,NUM_CPTE,
  286.                                                         XSEQ,CONTROL_FECHA,CUENTA_CONT,XC_COS,
  287.                                                         XREQ1,XREQ2,XREQ3,XREQ4,
  288.                                                         0,A.CAN*COSTO_UNI,'Bodega : '||CONTROL_BODEGA||'. Movimiento Fuente : '||A.fue||'. Numero : '||xn_fue);
  289.                                                     EXCEPTION
  290.                                                         WHEN OTHERS THEN
  291.                                                             --MESSAGEBOX ('Problemas al insertar la cuenta contable.');
  292.                                                             RETORNO := 'Problemas al insertar la cuenta contable.';
  293.                                                             MERR:=RETORNO;                                                         
  294.                                                             RAISE SALTO_LOOP;
  295.                                                     END;
  296.                                             ELSE
  297.                                                 --MESSAGEBOX ('La cuenta de Inventarios o contrapartida para el codigo : '||Acod||' o su familia, no se ha definido adecuadamente.');
  298.                                                 RETORNO := 'La cuenta de Inventarios o contrapartida para el codigo : '||A.cod||' o su familia, no se ha definido adecuadamente.';
  299.                                             END IF;
  300.                                         ELSIF A.OPE='E' THEN
  301.                                             IF CUENTA_INV IS NOT NULL THEN
  302.                                                 ANALIZA_REQS(CUENTA_INV,XN_FUE,A.CAN*COSTO_UNI,CONTROL_N_IDE,XREQ1,XREQ2,XREQ3,XREQ4,XC_COS,
  303.                                                 --
  304.                                                 --NUEVOS PARAMETROS
  305.                                                 --
  306.                                                 CONTROL_C_COS, GLOBAL_EMPRESA);
  307.  
  308.                                                 XSEQ:=NVL(XSEQ,0)+1;
  309.                                                 --
  310.                                                 -- ENTRADA --> DEBITA LA CUENTA DE INVENTARIOS
  311.                                                 --
  312.  
  313.                                                     BEGIN
  314.                                                         INSERT INTO CPTE_DET
  315.                                                         (C_EMP,PER,C_CLA,CPTE,
  316.                                                         SEQ,FEC,C_CTA,C_COS,
  317.                                                         REQ1,REQ2,REQ3,REQ4,
  318.                                                         CR,DB,DES)
  319.                                                         VALUES
  320.                                                         (GLOBAL_EMPRESA,TO_CHAR(CONTROL_FECHA,'YYYYMM'),CONTROL_C_CLA,NUM_CPTE,
  321.                                                         XSEQ,CONTROL_FECHA,CUENTA_INV,XC_COS,
  322.                                                         XREQ1,XREQ2,XREQ3,XREQ4,
  323.                                                         0,A.CAN*COSTO_UNI,'Bodega : '||CONTROL_BODEGA||'. Movimiento Fuente : '||A.fue||'. Numero : '||xn_fue);
  324.                                                     EXCEPTION
  325.                                                         WHEN OTHERS THEN
  326.                                                         RETORNO := 'Problemas al insertar la cuenta contable en la salida. '||SQLERRM;
  327.                                                         MERR:=RETORNO;                                                     
  328.                                                         RAISE SALTO_LOOP;
  329.                                                     END;
  330.  
  331.                                                     ANALIZA_REQS(CONTROL_C_CTA_PUENTE,XN_FUE,A.CAN*COSTO_UNI,CONTROL_N_IDE,XREQ1,XREQ2,XREQ3,XREQ4,XC_COS,
  332.                                                     --
  333.                                                     --NUEVOS PARAMETROS
  334.                                                     --
  335.                                                     CONTROL_C_COS, GLOBAL_EMPRESA);
  336.  
  337.                                                     XSEQ:=NVL(XSEQ,0)+1;
  338.        
  339.                                                         BEGIN
  340.                                                             INSERT INTO CPTE_DET
  341.                                                             (C_EMP,PER,C_CLA,CPTE,
  342.                                                             SEQ,FEC,C_CTA,C_COS,
  343.                                                             REQ1,REQ2,REQ3,REQ4,
  344.                                                             CR,DB,DES)
  345.                                                             VALUES
  346.                                                             (GLOBAL_EMPRESA,TO_CHAR(CONTROL_FECHA,'YYYYMM'),CONTROL_C_CLA,NUM_CPTE,
  347.                                                             XSEQ,CONTROL_FECHA,CONTROL_C_CTA_PUENTE,XC_COS,
  348.                                                             XREQ1,XREQ2,XREQ3,XREQ4,
  349.                                                             A.CAN*COSTO_UNI,0,'Bodega : '||CONTROL_BODEGA||'. Movimiento Fuente : '||A.fue||'. Numero : '||xn_fue);
  350.                                                         EXCEPTION
  351.                                                             WHEN OTHERS THEN
  352.                                                                 RETORNO := 'Problemas al insertar la cuenta contable en la salida. '||SQLERRM;
  353.                                                                 MERR:=RETORNO;                                                             
  354.                                                                 RAISE SALTO_LOOP;
  355.                                                         END;
  356.                                             ELSE
  357.                                                 RETORNO := 'No se ha definido la cuenta de inventarios para el código : '||A.cod;
  358.                                                 MERR:=RETORNO;                        
  359.                                                 RAISE SALTO_LOOP;
  360.                                             END IF;
  361.                                         END IF;
  362.  
  363.                                         N_FUE_CRUCE := A.N_FUE;
  364.  
  365.                                         --
  366.                                         -- AHORA SE ASIENTA EL REGISTRO GENERADO EN KARDEX
  367.                                         --
  368.                                         ACTUALIZAKARDEX(GLOBAL_EMPRESA,CONTROL_BODEGA,TO_CHAR(A.FECHA,'YYYYMM'),A.fue,xn_fue,cerr,merr);
  369.                                             IF CERR<>0 THEN
  370.                                                 MERR:='ACTUALIZA KARDEX . '||MERR;                        
  371.                                                 RAISE SALTO_LOOP;
  372.                                             END IF;
  373.                                        
  374.  
  375.                                             --
  376.                                             -- POR ULTIMO SE ACTUALIZA LA TABLA DE KARDEX CON EL ESTADO P QUE INDICA QUE
  377.                                             -- EL REGISTRO YA SE HALLA ASENTADO EN EL SP6
  378.                                             --
  379.                                                 BEGIN
  380.                                                     UPDATE PE_KARDEX
  381.                                                     SET ESTADO='P'
  382.                                                     WHERE BOD=CONTROL_BODEGA
  383.                                                     AND COD=A.COD
  384.                                                     AND FUE=A.FUE
  385.                                                     AND N_FUE=A.N_FUE;
  386.                           dbms_output.put_line('PE_KARDEX: '||CONTROL_BODEGA||':.:'||A.COD||':.:'||A.FUE||':.:'||A.N_FUE);
  387.                                                 EXCEPTION
  388.                                                     WHEN OTHERS THEN
  389.                                                     MERR:='Problemas al actualizar el estado en la tabla de movimientos del punto de EntregA '||SQLERRM;                                                   
  390.                                                     RAISE SALTO_LOOP;
  391.                                                 END;    
  392.     BEGIN
  393.       UPDATE RIPSMEDICAMENTOS
  394.       SET ESTADO = 1
  395.       WHERE id_med = A.COD
  396.       AND punto_id = A.BOD
  397.       AND lote_id = A.LOTE
  398.       AND fecha_sol = A.FECHA
  399.       AND fue = A.FUE
  400.       AND ope = A.OPE;
  401.     EXCEPTION
  402.       WHEN OTHERS THEN
  403.         dbms_output.put_line('Error al intentar actualizar el estado del medicamento '||A.COD||' en ripsmedicamento '||SQLERRM);
  404.     END;
  405.    
  406.    
  407.   EXCEPTION
  408.     WHEN SALTO_LOOP THEN
  409.       REGISTRAR_ERROR(A.BOD,A.COD,A.FECHA,A.HORA,A.CAN,A.FUE,A.N_FUE,A.OPE,A.LOTE,A.ESTADO,'03','CA',MERR);
  410.   END;
  411.  
  412. END LOOP;
  413. CLOSE KK;
  414.     --
  415.     -- ACUALIZAMOS Y ASENTAMOS EL COMPROBANTE CONTABLE
  416.     --
  417.     IF NVL(XSEQ,0)<>0 THEN
  418.         BEGIN
  419.             UPDATE CPTE_ENC
  420.             SET TOTDEB=TOTAL_CPTE,
  421.             TOTCRE=TOTAL_CPTE
  422.             WHERE C_EMP=GLOBAL_EMPRESA
  423.             AND PER=TO_CHAR(CONTROL_FECHA,'YYYYMM')
  424.             AND C_CLA=CONTROL_C_CLA
  425.             AND CPTE=NUM_CPTE;
  426.  
  427.             IF SQL%NOTFOUND THEN
  428.                 --MESSAGEBOX ('Comprobante contable no fue generado');
  429.                 RETORNO := 'Comprobante contable no fue generado';
  430.                 RETURN RETORNO;
  431.             END IF;
  432.         EXCEPTION
  433.           WHEN OTHERS THEN
  434.             --MESSAGEBOX ('No se pudo actualizar el comprobante contable. '||SQLERRM);
  435.             RETORNO := 'No se pudo actualizar el comprobante contable. '||SQLERRM;
  436.             RETURN RETORNO;
  437.             --RAISE FORM_TRIGGER_FAILURE;
  438.         END;
  439.  
  440.         CERR:=0;
  441.         ASIENTOSINCOMMIT(GLOBAL_EMPRESA,TO_CHAR(CONTROL_FECHA,'YYYYMM'),CONTROL_C_CLA,NUM_CPTE,CERR,MERR);
  442.         IF CERR<>0 THEN
  443.             --MESSAGEBOX ('Problemas al asentar el comprobante contable. '||MERR);
  444.             RETORNO := 'Problemas al asentar el comprobante contable. '||MERR;
  445.             RETURN RETORNO;
  446.             --RAISE FORM_TRIGGER_FAILURE;
  447.         END IF;
  448.  
  449.         --MESSAGEBOX ('Proceso Terminado con éxito. Comprobante contable generado Nro : '||Num_Cpte);
  450.         RETORNO := 'Proceso Terminado con exito. Comprobante contable generado Nro : '||Num_Cpte;
  451.  
  452.         INSERT INTO COMPROBANTE_NFUE(NFUE, COMPROBANTE) VALUES (N_FUE_CRUCE, Num_Cpte);
  453.  
  454.         COMMIT;
  455.         --COMMIT_FORM;
  456.     ELSE
  457.         --MESSAGEBOX ('No existe ningun movimiento por generar.');
  458.         RETORNO := 'No existe ningun movimiento por generar.';
  459.     END IF;
  460.  
  461.     RETURN RETORNO;
  462. EXCEPTION
  463.   WHEN HUBO_ERROR THEN
  464.     --MESSAGEBOX(MERR);
  465.     RETORNO := MERR;
  466.     --DESHACER;
  467.     --RAISE FORM_TRIGGER_FAILURE;
  468.  
  469.     RETURN RETORNO;
  470. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement