201 lines
6.7 KiB
Plaintext
201 lines
6.7 KiB
Plaintext
{
|
|
-------------------------------------------------------------------------------
|
|
PROGRAMA : COPRCS007
|
|
OBJETIVO : Consulta Ordenes Organizadas Por Tipo
|
|
PROGRAMADOR : Ing. Juan Fco. Soto.
|
|
FECHA REALIZACION : Octubre 7, 1992
|
|
-------------------------------------------------------------------------------
|
|
}
|
|
GLOBALS "coprgb000.4gl"
|
|
|
|
FUNCTION coprcs007()
|
|
DEFINE sale CHAR (1)
|
|
DEFINE busca_orden RECORD
|
|
num_oc integer,
|
|
tipo char(2),
|
|
fecha date,
|
|
cod_sp smallint,
|
|
cod_sp_sec smallint,
|
|
nombre char(45),
|
|
monto decimal(12,2)
|
|
END RECORD
|
|
|
|
DEFINE desp_orden ARRAY[500] OF RECORD
|
|
num_oc1 integer,
|
|
tipo1 char(2),
|
|
fecha1 date,
|
|
codigo_s char(7),
|
|
nombre1 char(45),
|
|
monto1 decimal(12,2)
|
|
END RECORD
|
|
DEFINE encontrado integer
|
|
DEFINE total_d,total_g DECIMAL(12,2)
|
|
DEFINE primera char(1)
|
|
|
|
WHENEVER ERROR CONTINUE
|
|
CLEAR SCREEN
|
|
OPTIONS
|
|
FORM LINE 8,
|
|
ERROR LINE 23,
|
|
COMMENT LINE 21
|
|
LET formulario = formulario CLIPPED,"cofmcs007"
|
|
OPEN FORM cofmcs007 FROM formulario
|
|
DISPLAY FORM cofmcs007
|
|
CALL PANTALLA()
|
|
DISPLAY "<Esc> Continua Consulta" AT 2,3
|
|
DISPLAY "<Delete> Cancela Operacion" AT 2,50
|
|
DISPLAY "coprcs007" AT 4,3
|
|
DISPLAY "Consulta Ordenes Organizadas Por Tipo " AT 6,23
|
|
|
|
LABEL volver:
|
|
|
|
INPUT BY NAME rango.* ATTRIBUTE (YELLOW)
|
|
AFTER FIELD fech_in
|
|
IF rango.fech_in IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fech_in
|
|
END IF
|
|
AFTER FIELD fech_fi
|
|
IF rango.fech_in IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fech_fi
|
|
END IF
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
## Se seleccionan los campos que el usuario debe ver en la pantalla
|
|
DISPLAY "Buscando Informacion... Espere Por Favor" AT 21,1 ATTRIBUTE(YELLOW)
|
|
SELECT COUNT(*) INTO encontrado FROM cotb00014 WHERE
|
|
fech_oc between rango.fech_in and rango.fech_fi
|
|
|
|
DECLARE accion CURSOR FOR
|
|
|
|
SELECT a.num_oc ,a.tipo,a.fech_oc,b.cod_sp,b.cod_sp_sec,b.nom_sp,
|
|
sum(c.precio)
|
|
FROM cotb00014 a, cotb00001 b,cotb00015 c
|
|
WHERE a.num_oc = c.num_oc and
|
|
a.tipo = c.tipo and
|
|
a.cod_sp = b.cod_sp and
|
|
a.cod_sp_sec = b.cod_sp_sec and
|
|
a.fech_oc between rango.fech_in and rango.fech_fi AND
|
|
a.status_t IS NULL
|
|
GROUP BY 1,2,3,4,5,6
|
|
ORDER BY 2,1
|
|
|
|
## Busca los registros que cumplan con la condicion dada y verifica si el
|
|
## suplidor existe en el catalogo de suplidores
|
|
OPEN accion
|
|
LET idx = 1
|
|
LET primera = "S"
|
|
LET total_g = 0
|
|
LET total_d = 0
|
|
WHILE STATUS != NOTFOUND
|
|
FETCH accion INTO busca_orden.*
|
|
IF status = notfound AND sale is null THEN
|
|
LET desp_orden[idx].codigo_s = null
|
|
LET desp_orden[idx].nombre1 = null
|
|
LET desp_orden[idx].num_oc1 = null
|
|
LET desp_orden[idx].tipo1 = null
|
|
LET desp_orden[idx].fecha1 = null
|
|
LET idx = idx + 1
|
|
LET desp_orden[idx].codigo_s = null
|
|
LET desp_orden[idx].nombre1 = null
|
|
LET desp_orden[idx].num_oc1 = null
|
|
LET desp_orden[idx].tipo1 = null
|
|
LET desp_orden[idx].fecha1 = null
|
|
LET desp_orden[idx].nombre1 = "Total Tipo Orden ==> "
|
|
LET desp_orden[idx].monto1 = total_d using "##,###,###.##"
|
|
LET total_g = total_g + total_d
|
|
LET sale = "S"
|
|
END IF
|
|
|
|
IF primera = "S" THEN
|
|
LET desp_orden[idx].tipo1 = busca_orden.tipo
|
|
LET primera = "N"
|
|
END IF
|
|
|
|
IF desp_orden[idx].tipo1 = busca_orden.tipo THEN
|
|
LET desp_orden[idx].codigo_s = busca_orden.cod_sp using "&&","-",
|
|
busca_orden.cod_sp_sec using "&&&&"
|
|
LET desp_orden[idx].nombre1 = busca_orden.nombre
|
|
LET desp_orden[idx].num_oc1 = busca_orden.num_oc
|
|
LET desp_orden[idx].tipo1 = busca_orden.tipo
|
|
LET desp_orden[idx].monto1 = busca_orden.monto
|
|
LET desp_orden[idx].fecha1 = busca_orden.fecha using "dd/mm/yy"
|
|
LET total_d = total_d + desp_orden[idx].monto1
|
|
END IF
|
|
|
|
IF desp_orden[idx].tipo1 != busca_orden.tipo THEN
|
|
LET desp_orden[idx].codigo_s = null
|
|
LET desp_orden[idx].nombre1 = null
|
|
LET desp_orden[idx].num_oc1 = null
|
|
LET desp_orden[idx].tipo1 = null
|
|
LET desp_orden[idx].fecha1 = null
|
|
LET idx = idx + 1
|
|
LET desp_orden[idx].codigo_s = null
|
|
LET desp_orden[idx].nombre1 = null
|
|
LET desp_orden[idx].num_oc1 = null
|
|
LET desp_orden[idx].tipo1 = null
|
|
LET desp_orden[idx].fecha1 = null
|
|
LET desp_orden[idx].nombre1 = "Total Tipo Orden ==> "
|
|
LET desp_orden[idx].monto1 = total_d using "##,###,###.##"
|
|
LET total_g = total_g + total_d
|
|
LET total_d = 0
|
|
LET primera = "S"
|
|
LET idx = idx + 1
|
|
LET desp_orden[idx].codigo_s = null
|
|
LET desp_orden[idx].nombre1 = null
|
|
LET desp_orden[idx].num_oc1 = null
|
|
LET desp_orden[idx].tipo1 = null
|
|
LET desp_orden[idx].fecha1 = null
|
|
LET idx = idx + 1
|
|
LET desp_orden[idx].codigo_s = null
|
|
LET desp_orden[idx].nombre1 = null
|
|
LET desp_orden[idx].num_oc1 = null
|
|
LET desp_orden[idx].tipo1 = null
|
|
LET desp_orden[idx].fecha1 = null
|
|
LET desp_orden[idx].codigo_s = busca_orden.cod_sp using "&&","-",
|
|
busca_orden.cod_sp_sec using "&&&&"
|
|
LET desp_orden[idx].nombre1 = busca_orden.nombre
|
|
LET desp_orden[idx].num_oc1 = busca_orden.num_oc
|
|
LET desp_orden[idx].tipo1 = busca_orden.tipo
|
|
LET desp_orden[idx].monto1 = busca_orden.monto using "##,###,###.##"
|
|
LET desp_orden[idx].fecha1 = busca_orden.fecha using "dd/mm/yy"
|
|
LET total_d = total_d + desp_orden[idx].monto1
|
|
END IF
|
|
LET idx = idx + 1
|
|
IF sale = "S" THEN
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
LET desp_orden[idx].tipo1 = busca_orden.tipo
|
|
END WHILE
|
|
DISPLAY " " AT 21,1
|
|
DISPLAY BY NAME encontrado
|
|
|
|
DISPLAY BY NAME total_g
|
|
CALL set_count (idx-1)
|
|
DISPLAY ARRAY desp_orden TO orden.*
|
|
## Verifica si el usuario presiono la tecla <Delete>
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
ELSE
|
|
CLEAR FORM
|
|
GOTO volver
|
|
END IF
|
|
|
|
END FUNCTION
|
|
|