Files
MBS/PROYECTO/codir/coprrp029.4gl
T

256 lines
9.3 KiB
Plaintext

{ ------------------------------------------------------------------------------
PROGRAMA : COPRRP029
OBJETIVO : REPORTE DE COMPRAS POR SUPLIDOR
PROGRAMADOR : JUAN SOTO
FECHA REALIZACION : AGOSTO 1997
DIRECTOR PROYECTO : JOSE ALFREDO PAULINO ALEJO
-------------------------------------------------------------------------------
}
GLOBALS
"coprgb000.4gl"
DEFINE rango_prt RECORD
fecha_ini like cotb00014.fech_oc,
fecha_fin like cotb00014.fech_oc
END RECORD
#----------------------------------------------------------------------------
#################
# co_suplidor()#
#################
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CONNECT TO "smarmotech" AS "MSSQL" USER usuarios USING clave
CALL coprrp029()
END MAIN
FUNCTION coprrp029()
DEFINE co_sp RECORD
cod_sp LIKE cotb00001.cod_sp,
cod_sp_sec like cotb00001.cod_sp_sec,
nom_sp like cotb00001.nom_sp,
tipo like cotb00014.tipo,
num_oc like cotb00014.num_oc,
fech_oc like cotb00014.fech_oc,
cantidad like cotb00015.cantidad,
precio like cotb00015.precio,
cod_n like cotb00015.cod_n,
cod_grupo like cotb00015.cod_grupo,
cod_tipo like cotb00015.cod_tipo,
cod_sec like cotb00015.cod_sec,
tasa_cambio like cotb00031.tasa_cambio
END RECORD,
p_cod_sp,p_cod_sp_sec INTEGER
DEFINE P_DESCRIP CHAR(30)
DEFINE total1 DECIMAL(14,2)
DEFINE criterio CHAR(50)
DEFINE selec1,selec2 CHAR(600)
DEFINE tipo_papel, numero_msg SMALLINT
OPTIONS
FORM LINE 9,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM cofmrp029 from "cofmrp029"
DISPLAY FORM cofmrp029
# INDICA EL TIPO DE PAPEL PARA LA IMPRESION
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
INPUT BY NAME rango_prt.fecha_ini,rango_prt.fecha_fin,
p_cod_sp,p_cod_sp_sec
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET handler = configureOutput("SVG")
START REPORT compras_s TO XML HANDLER handler
DECLARE curs_1 CURSOR FOR
SELECT a.cod_sp,a.cod_sp_sec,a.nom_sp,b.tipo,b.num_oc,b.fech_oc,c.cantidad,
c.precio,c.cod_n, c.cod_grupo, c.cod_tipo, c.cod_sec, d.tasa_cambio
FROM cotb00001 a, cotb00014 b, cotb00015 c, OUTER cotb00031 d
WHERE a.cod_sp_sec = b.cod_sp_sec and a.cod_sp = b.cod_sp and
a.cod_sp = p_cod_sp and a.cod_sp_sec = p_cod_sp_sec and
b.num_oc = c.num_oc and b.tipo IS NOT NULL AND
c.cod_mon = d.cod_mon and c.status_t is null and
b.fech_oc between rango_prt.fecha_ini and rango_prt.fecha_fin
ORDER BY b.num_oc,b.tipo,c.precio,c.cod_n,c.cod_grupo,c.cod_tipo
DISPLAY " " AT 2,1
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
FOREACH curs_1 INTO co_sp.*
OUTPUT TO REPORT compras_s(co_sp.*)
END FOREACH
DECLARE curs_2 CURSOR FOR
SELECT a.cod_sp,a.cod_sp_sec,a.nom_sp,b.tipo,b.num_oc,b.fech_oc,c.cantidad,
c.precio,c.cod_n, c.cod_grupo, c.cod_tipo, c.cod_sec, d.tasa_cambio
FROM cotb00001 a, cotb00033 b, cotb00034 c, OUTER cotb00031 d
WHERE a.cod_sp_sec = b.cod_sp_sec and a.cod_sp = b.cod_sp and
a.cod_sp = p_cod_sp and a.cod_sp_sec = p_cod_sp_sec and
b.num_oc = c.num_oc and b.tipo IS NULL AND
c.cod_mon = d.cod_mon and c.status_t is null and
b.fech_oc between rango_prt.fecha_ini and rango_prt.fecha_fin
ORDER BY b.num_oc,b.tipo,c.precio,c.cod_n,c.cod_grupo,c.cod_tipo
DISPLAY " " AT 2,1
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 2,1 ATTRIBUTE (REVERSE)
FOREACH curs_2 INTO co_sp.*
OUTPUT TO REPORT compras_s(co_sp.*)
END FOREACH
FINISH REPORT compras_s
CLEAR FORM
# CLEAR SCREEN
END FUNCTION
#-------------------------------------------------------------------------------
## DEFINICION DEL REGISTRO DE SALIDA
REPORT compras_s(x)
DEFINE x RECORD
cod_sp LIKE cotb00001.cod_sp,
cod_sp_sec like cotb00001.cod_sp_sec,
nom_sp like cotb00001.nom_sp,
tipo like cotb00014.tipo,
num_oc like cotb00014.num_oc,
fech_oc like cotb00014.fech_oc,
cantidad like cotb00015.cantidad,
precio like cotb00015.precio,
cod_n like cotb00015.cod_n,
cod_grupo like cotb00015.cod_grupo,
cod_tipo like cotb00015.cod_tipo,
cod_sec like cotb00015.cod_sec,
tasa_cambio like cotb00031.tasa_cambio
END RECORD
## DEFINICION DE LAS VARIABLES DE IMPRESION
DEFINE doble_on,doble_off,negrillas_on,negrillas_off,comp_on,comp_off,
doce,normal CHAR(2)
DEFINE p_descrip1,p_descrip CHAR(30) ,
nombre_m CHAR(20)
DEFINE base2 INTEGER
DEFINE valor,valor2 DECIMAL(14,2)
DEFINE hora CHAR(5)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
PAGE LENGTH 150
FORMAT
PAGE HEADER
LET hora = time
LET l = (123 - LENGTH(p_companias.nombre CLIPPED))/2
PRINT COLUMN 1,comp_on
PRINT COLUMN 1, "coprrp029",
COLUMN l, p_companias.nombre CLIPPED,
COLUMN 116, "Pag. ",pageno using "###"
PRINT COLUMN 43, " SISTEMA DE COMPRAS ",
COLUMN 116, today using "dd/mm/yyyy"
PRINT COLUMN 42, " REPORTE DE COMPRA POR SUPLIDOR ",
COLUMN 116, hora
PRINT COLUMN 45, "DEL ", rango_prt.fecha_ini USING "dd/mm/yyyy",
" AL ", rango_prt.fecha_fin USING "dd/mm/yyyy"
## IMPRESION DE ENCABEZADOS
SKIP 1 LINE
PRINT COLUMN 1, "FECHA: ",today using "dd/mm/yyyy"
PRINT COLUMN 1, "SUPLIDOR: ", x.cod_sp using "##","-",
x.cod_sp_sec using "####"," ",x.nom_sp
SKIP 1 LINE
PRINT COLUMN 1, negrillas_on
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"-----------------------------------"
SKIP 1 LINE
PRINT COLUMN 1, "NUMERO/ORDEN",
COLUMN 17, "FECHA",
COLUMN 24, "CODIGO/PROD.",
COLUMN 48, " DESCRIPCION",
COLUMN 84, "CANTIDAD",
COLUMN 100, "PRECIO/UN.",
COLUMN 114, "TASA",
COLUMN 125, "TOTAL "
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"-----------------------------------"
PRINT COLUMN 1, negrillas_off
## IMPRESION DEL DETALLE
ON EVERY ROW
IF x.tipo = "01" THEN
SELECT z.descrip_esp INTO p_descrip from intb00001 z
where z.cod_n = x.cod_n and z.cod_grupo = x.cod_grupo and
z.cod_tipo = x.cod_tipo and z.cod_sec = x.cod_sec
END IF
IF x.tipo = "02" THEN
SELECT z.descrip_esp INTO p_descrip from iptb00002 z
where z.cod_n = x.cod_n and z.cod_grupo = x.cod_grupo and
z.cod_tipo = x.cod_tipo and z.cod_sec = x.cod_sec
END IF
IF x.tipo = "03" THEN
SELECT z.descrip_esp INTO p_descrip from irtb00001 z
where z.cod_n = x.cod_n and z.cod_grupo = x.cod_grupo and
z.cod_tipo = x.cod_tipo and z.cod_sec = x.cod_sec
END IF
LET base2 = 1
IF base2 IS NULL OR base2 = 0 THEN
LET base2 = 1
END IF
LET valor = (x.cantidad / base2) * x.precio
LET valor2 = valor * x.tasa_cambio
PRINT COLUMN 1, x.num_oc USING "&&&&&&",
COLUMN 14, x.fech_oc USING "DD/MM/YYYY",
COLUMN 26, x.cod_n USING "&&&&","-",x.cod_grupo USING "&&&&", "-",
x.cod_tipo USING "&&&&","-", x.cod_sec USING "&&&&",
COLUMN 37, p_descrip CLIPPED, " ",nombre_m CLIPPED," ",
p_descrip1 CLIPPED,
COLUMN 78, x.cantidad USING "###,###,###.##",
COLUMN 95, x.precio USING "###,###,###.##",
COLUMN 113, x.tasa_cambio USING "##.##",
COLUMN 118, valor2 USING "###,###,###.##"
AFTER GROUP OF x.num_oc
SKIP 1 LINE
ON LAST ROW
PRINT COLUMN 1, negrillas_on
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"-----------------------------------"
PRINT COLUMN 7, " TOTAL GENERAL : ",
COLUMN 118, SUM(valor2) USING "###,###,###.##"
PRINT COLUMN 1, negrillas_off
# PRINT COLUMN 1,comp_off
END REPORT