{ ------------------------------------------------------------------ PROGRAMA : CCPRMT005 OBJETIVO : Eliminar registros de Movimientos de Cuentas X Cobrar PROGRAMADOR : JUAN SOTO FECHA REALIZACION : Febrero 01, 1997 DIRECTOR PROYECTO : JOSE ALFREDO PAULINO ALEJO ------------------------------------------------------------------ } GLOBALS "ccprgb000.4gl" SCHEMA smarmotech DEFINE cctb01 RECORD LIKE cctb00001.* DEFINE nombre,apellido CHAR(15) DEFINE nombre1 CHAR(30) DEFINE vendedor,ult_numero,ult_numero1 INTEGER DEFINE cctb02 RECORD LIKE cctb00002.* DEFINE opcion2,opcion1 CHAR(1) DEFINE tipo CHAR(2) FUNCTION ccprmt005() LET int_flag = FALSE CLEAR SCREEN OPTIONS FORM LINE 8, ERROR LINE 23, PROMPT LINE 23, COMMENT LINE 21 OPEN FORM ccfmmt005 FROM "ccfmmt005" DISPLAY FORM ccfmmt005 CALL pantalla() DISPLAY "ccprmt005" AT 4,3 DISPLAY "Eliminacion Fisica de Movimientos" at 6,23 # WHENEVER ERROR CONTINUE ## Captura los datos que va a contener el registro MENU "OPCIONES" COMMAND "Eliminar" " Cancela Operacion" CLEAR FORM CALL ccprel005() COMMAND "Activar" " Cancela Operacion" CLEAR FORM CALL ccprac005() COMMAND "Salir" "Retorna Menu Anterior" EXIT MENU END MENU END FUNCTION FUNCTION ccprel005() LET int_flag = FALSE INPUT BY NAME cctb01.num_cheque,cctb01.tipo_doc AFTER FIELD num_cheque IF cctb01.num_cheque IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD num_cheque END IF AFTER FIELD tipo_doc IF cctb01.tipo_doc IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD tipo_doc END IF SELECT UNIQUE i.tipo_cliente,i.sec_cliente,i.cod_emp_sec, i.fecha_orig,SUM(i.valor) INTO cctb01.tipo_cliente,cctb01.sec_cliente,cctb01.cod_emp_sec, cctb01.fecha_orig,cctb01.valor FROM cctb00001 i WHERE i.num_doc= cctb01.num_cheque AND i.tipo_doc= cctb01.tipo_doc and i.status_t is null GROUP BY 1,2,3,4 IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD num_cheque END IF IF cctb01.valor < 0 THEN LET cctb01.valor = cctb01.valor * -1 END IF SELECT a.nombre INTO nombre1 FROM vetb00004 a WHERE a.tipo_cliente = cctb01.tipo_cliente and a.sec_cliente = cctb01.sec_cliente SELECT a.nom1_emp,a.apell1_emp INTO nombre,apellido FROM adtb00003 a WHERE a.num_emp = cctb01.cod_emp_sec IF cctb01.tipo_doc = "PG" THEN SELECT a.ult_recibo INTO ult_numero FROM cctb00003 a WHERE a.tipo_doc = cctb01.tipo_doc AND a.sec_vend = cctb01.cod_emp_sec SELECT MAX(a.fecha) INTO cctb02.fecha FROM cctb00002 a WHERE a.sec_vend = cctb01.cod_emp_sec SELECT a.sec_de,a.sec_a INTO cctb02.sec_de,cctb02.sec_a FROM cctb00002 a WHERE a.fecha=cctb02.fecha AND a.sec_vend=cctb01.cod_emp_sec DISPLAY BY NAME cctb01.sec_cliente,cctb01.cod_emp_sec, cctb01.fecha_orig,cctb01.valor,nombre1, nombre,apellido,ult_numero,cctb02.fecha, cctb02.sec_de,cctb02.sec_a IF cctb01.num_cheque <> ult_numero THEN LET numero_msg = 230 CALL msg(numero_msg) NEXT FIELD num_cheque END IF END IF {SELECT a.ult_recibo INTO ult_numero FROM cctb00003 a WHERE a.tipo_doc = cctb01.tipo_doc IF ult_numero IS NULL THEN SELECT MAX(a.num_doc) INTO ult_numero FROM cctb00001 a WHERE a.tipo_doc = cctb01.tipo_doc END IF DISPLAY BY NAME cctb01.sec_cliente,cctb01.cod_emp_sec, cctb01.fecha_orig,cctb01.valor,nombre1, nombre,apellido,ult_numero END IF} LET p_fechas = cctb01.fecha_orig USING "ddmmyyyy" CALL prd() IF bandera = 1 THEN SLEEP 5 LET bandera = 0 RETURN END IF END INPUT IF int_flag THEN LET int_flag = FALSE LET numero_msg = 2 CALL msg(numero_msg) RETURN END IF LET tipo = cctb01.tipo_doc LET vendedor = cctb01.cod_emp_sec LABEL pregunta: PROMPT "Deseas Eliminar Registro [S/N]...? " FOR CHAR opcion2 LET opcion2 = UPSHIFT(opcion2) IF (opcion2 IS NULL) THEN GOTO pregunta END IF IF opcion2 != "S" AND opcion2 != "N" THEN GOTO pregunta END IF IF opcion2 = "S" THEN LABEL pregunta1: PROMPT "Presiones S o N Para Confirmar Proceso" FOR CHAR opcion1 LET opcion1 = UPSHIFT(opcion1) IF opcion1 IS NULL THEN GOTO pregunta1 END IF IF (opcion1 != "S" AND opcion1 != "N") THEN GOTO pregunta1 END IF IF opcion1 = "S" THEN DECLARE busca CURSOR FOR SELECT a.* FROM cctb00001 a WHERE a.tipo_doc IN ("ND","NC","AV","PG","RC") AND a.num_cheque = cctb01.num_cheque AND a.aplica_a != a.num_doc FOREACH busca INTO cctb01.* INSERT INTO cctb00004 VALUES(cctb01.*,cctb02.sec_de, cctb02.sec_a,ult_numero) END FOREACH UPDATE cctb00004 SET (us_crea,fech_crea) = (USER,CURRENT) WHERE @num_cheque = cctb01.num_cheque AND @tipo_doc IN ("AV","PG","ND","NC","RC") AND @aplica_a != @num_doc IF cctb01.tipo_doc = "PG" THEN UPDATE cctb00003 SET ult_recibo = ult_numero - 1 WHERE @sec_vend = vendedor AND @tipo_doc = tipo ELSE UPDATE cctb00003 SET ult_recibo = ult_numero - 1 WHERE @tipo_doc = tipo END IF DELETE FROM cctb00001 WHERE @num_cheque = cctb01.num_cheque AND @tipo_doc IN ("AV","PG","ND","NC","RC") AND @aplica_a != num_doc LET numero_msg = 13 CALL msg(numero_msg) END IF END IF END FUNCTION FUNCTION ccprac005() LET int_flag = FALSE INPUT BY NAME cctb01.num_cheque,cctb01.tipo_doc AFTER FIELD num_cheque IF cctb01.num_cheque IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD num_cheque END IF AFTER FIELD tipo_doc IF cctb01.tipo_doc IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD tipo_doc END IF SELECT UNIQUE i.tipo_cliente,i.sec_cliente,i.cod_emp_sec, i.fecha_orig,SUM(i.valor) INTO cctb01.tipo_cliente,cctb01.sec_cliente,cctb01.cod_emp_sec, cctb01.fecha_orig,cctb01.valor FROM cctb00004 i WHERE i.num_doc =cctb01.num_cheque AND i.tipo_doc=cctb01.tipo_doc and i.status_t is null GROUP BY 1,2,3,4 IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD num_cheque END IF IF cctb01.valor THEN LET cctb01.valor = cctb01.valor * -1 END IF SELECT a.nombre INTO nombre1 FROM vetb00004 a WHERE a.tipo_cliente = cctb01.tipo_cliente and a.sec_cliente = cctb01.sec_cliente SELECT a.nom1_emp,a.apell1_emp INTO nombre,apellido FROM adtb00003 a WHERE a.num_emp = cctb01.cod_emp_sec IF cctb01.tipo_doc = "PG" THEN SELECT a.ult_recibo INTO ult_numero FROM cctb00003 a WHERE a.tipo_doc = cctb01.tipo_doc AND a.sec_vend = cctb01.cod_emp_sec SELECT MAX(a.fecha) INTO cctb02.fecha FROM cctb00002 a WHERE a.sec_vend = cctb01.cod_emp_sec SELECT a.sec_de,a.sec_a INTO cctb02.sec_de,cctb02.sec_a FROM cctb00002 a WHERE a.fecha=cctb02.fecha AND a.sec_vend=cctb01.cod_emp_sec DISPLAY BY NAME cctb01.sec_cliente,cctb01.cod_emp_sec, cctb01.fecha_orig,cctb01.valor,nombre1, nombre,apellido,ult_numero,cctb02.fecha, cctb02.sec_de,cctb02.sec_a IF cctb01.num_cheque <> (ult_numero+1) THEN LET numero_msg = 230 CALL msg(numero_msg) NEXT FIELD num_cheque END IF END IF {SELECT a.ult_recibo INTO ult_numero FROM cctb00003 a WHERE a.tipo_doc = cctb01.tipo_doc IF ult_numero IS NULL THEN SELECT MAX(a.num_doc) INTO ult_numero FROM cctb00001 a WHERE a.tipo_doc = cctb01.tipo_doc END IF DISPLAY BY NAME cctb01.sec_cliente,cctb01.cod_emp_sec, cctb01.fecha_orig,cctb01.valor,nombre1, nombre,apellido,ult_numero END IF} LET p_fechas = cctb01.fecha_orig USING "ddmmyyyy" CALL prd() IF bandera = 1 THEN SLEEP 5 LET bandera = 0 RETURN END IF END INPUT IF int_flag THEN LET int_flag = FALSE LET numero_msg = 2 CALL msg(numero_msg) RETURN END IF LET tipo = cctb01.tipo_doc LET vendedor = cctb01.cod_emp_sec LABEL pregunta: PROMPT "Deseas Activar Registro [S/N]...? " FOR CHAR opcion2 LET opcion2 = UPSHIFT(opcion2) IF (opcion2 IS NULL) THEN GOTO pregunta END IF IF opcion2 != "S" AND opcion2 != "N" THEN GOTO pregunta END IF IF opcion2 = "S" THEN LABEL pregunta1: PROMPT "Presiones S o N Para Confirmar Proceso" FOR CHAR opcion1 LET opcion1 = UPSHIFT(opcion1) IF opcion1 IS NULL THEN GOTO pregunta1 END IF IF (opcion1 != "S" AND opcion1 != "N") THEN GOTO pregunta1 END IF IF opcion1 = "S" THEN DISPLAY "PROCESO CORRECTO" AT 23,10 SLEEP 5 DECLARE busca1 CURSOR FOR SELECT a.* FROM cctb00004 a WHERE a.num_cheque = cctb01.num_cheque AND a.tipo_doc IN ("PG","AV","ND","NC","RC") FOREACH busca1 INTO cctb01.* INSERT INTO cctb00001 VALUES(cctb01.*) END FOREACH UPDATE cctb00004 SET (us_crea,fech_crea) = (USER,CURRENT) WHERE @num_cheque = cctb01.num_cheque AND @tipo_doc IN("AV","PG","NC","ND","RC") IF cctb01.tipo_doc = "PG" THEN UPDATE cctb00003 SET ult_recibo = cctb01.num_cheque WHERE @sec_vend = vendedor AND @tipo_doc = tipo ELSE UPDATE cctb00003 SET ult_recibo = cctb01.num_cheque WHERE @tipo_doc = tipo END IF UPDATE cctb00004 SET (status_t,us_mod,fech_mod) = ("E",USER,CURRENT) WHERE @num_cheque = cctb01.num_cheque AND @tipo_doc IN("AV","PG","NC","ND","RC") LET numero_msg = 1 CALL msg(numero_msg) END IF END IF END FUNCTION