626 lines
18 KiB
Plaintext
626 lines
18 KiB
Plaintext
{
|
|
-------------------------------------------------------------------------------
|
|
PROGRAMA : CTPRRP029
|
|
OBJETIVO : Historial de precios reales Producto Terminado
|
|
PROGRAMADOR : Tadeo A. Ferreras
|
|
FECHA : Julio 18, 1995.
|
|
-------------------------------------------------------------------------------
|
|
}
|
|
GLOBALS
|
|
"ctprgb000.4gl"
|
|
|
|
###### Definicion de variables a usar en la generacion del reporte ######
|
|
|
|
DEFINE p_porciento,porciento DECIMAL(8,3)
|
|
DEFINE selec6,selec5,selec2,selec1 CHAR(1000)
|
|
DEFINE impresion,ventas CHAR(1)
|
|
DEFINE anos CHAR(4)
|
|
DEFINE labor,t_cantidad DECIMAL(12,3)
|
|
DEFINE ano2,ano1,mes1,mes3,idx_1,idx_2 INTEGER
|
|
DEFINE salir,salir1,salir2 CHAR(1)
|
|
DEFINE fecha1,fecha2,fecha3,fecha4 DATE
|
|
|
|
DEFINE codgp SMALLINT
|
|
DEFINE tmes INTEGER
|
|
|
|
FUNCTION ctprrp029()
|
|
|
|
DEFINE histo1 RECORD
|
|
ventas CHAR(1),
|
|
mes2 SMALLINT,
|
|
nomenclatura LIKE iptb00002.nomenclatura,
|
|
costo_lq DECIMAL(12,4)
|
|
END RECORD
|
|
|
|
DEFINE histo RECORD
|
|
ventas CHAR(1),
|
|
mes2 SMALLINT,
|
|
nomenclatura LIKE iptb00002.nomenclatura,
|
|
costo_lq DECIMAL(12,4)
|
|
END RECORD
|
|
|
|
|
|
OPTIONS
|
|
ERROR LINE 24,
|
|
FORM LINE 8
|
|
|
|
######## Abriendo el formulario para digitar criterio de busqueda ####
|
|
|
|
OPEN FORM ctfmrp029 FROM "ctfmrp029"
|
|
DISPLAY FORM ctfmrp029
|
|
CALL pantalla()
|
|
DISPLAY "ctprrp029" AT 4,3
|
|
DISPLAY "Historial de Costos Reales Productos Terminados" AT 6,16
|
|
|
|
LET tipo_papel = 1
|
|
CALL msgrp000(tipo_papel)
|
|
|
|
##### Captura de informacion para criterio de busqueda #######
|
|
|
|
CONSTRUCT criterio ON a.cod_n,a.ventas FROM cod_n,ventas
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
|
|
INPUT BY NAME ano1,mes1,p_porciento,impresion
|
|
AFTER FIELD impresion
|
|
IF impresion = "S" THEN
|
|
IF mes1 < 3 THEN
|
|
LET numero_msg = 359
|
|
CALL msg(numero_msg)
|
|
LET impresion = "N"
|
|
END IF
|
|
END IF
|
|
AFTER FIELD ano1
|
|
IF ano1 IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD ano1
|
|
END IF
|
|
|
|
AFTER FIELD mes1
|
|
IF mes1 IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD mes1
|
|
END IF
|
|
|
|
IF mes1 > 12 THEN
|
|
LET numero_msg = 51
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD mes1
|
|
END IF
|
|
|
|
SELECT fecha_inicio INTO fecha1 FROM prdtable WHERE ano = ano1 AND mes = 1
|
|
SELECT fecha_corte INTO fecha2 FROM prdtable WHERE ano = ano1 AND mes = mes1
|
|
|
|
|
|
|
|
|
|
|
|
LET p_fechas = fecha2 using "ddmmyy"
|
|
{
|
|
CALL prd()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
NEXT FIELD mes1
|
|
END IF
|
|
}
|
|
AFTER FIELD p_porciento
|
|
IF p_porciento IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD p_porciento
|
|
END IF
|
|
|
|
AFTER INPUT
|
|
LET p_fechas = fecha2 using "ddmmyy"
|
|
{
|
|
CALL prd()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
NEXT FIELD mes1
|
|
END IF
|
|
}
|
|
END INPUT
|
|
|
|
###### Facicilidad para cancelar el reporte (OPcional) ############
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
|
|
###### Selecionando informacion a imprimir ############
|
|
|
|
DELETE FROM cttb00002 WHERE ano = ano1
|
|
DELETE FROM cttb00002 WHERE ano = ano1-1
|
|
|
|
LET selec5 =
|
|
"SELECT a.ventas,c.mes,b.nomenclatura,AVG(a.costo_lq) ",
|
|
"FROM cttb00036 a,iptb00002 b,prdtable c ",
|
|
"WHERE a.cod_n = b.cod_n AND a.cod_grupo=b.cod_grupo AND ",
|
|
" a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_sec AND ",
|
|
" a.status_t IS NULL AND a.fecha_lq BETWEEN c.fecha_inicio AND ",
|
|
" c.fecha_corte < ? AND c.ano = ? AND c.mes <= ? AND ",
|
|
criterio CLIPPED," GROUP BY 1,2,3"
|
|
|
|
DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>"
|
|
AT 19,14 ATTRIBUTE (REVERSE,BOLD)
|
|
|
|
PREPARE comando4 FROM selec5
|
|
DECLARE busca4 CURSOR FOR comando4
|
|
OPEN busca4 USING fecha2,ano1,mes1
|
|
|
|
LET selec6 =
|
|
"SELECT a.ventas,c.mes,b.nomenclatura,AVG(a.costo_lq) ",
|
|
"FROM cttb00036 a,iptb00002 b,prdtable c ",
|
|
"WHERE a.cod_n = b.cod_n AND a.cod_grupo=b.cod_grupo AND ",
|
|
" a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_sec AND ",
|
|
" a.status_t IS NULL AND a.fecha_lq BETWEEN c.fecha_inicio AND ",
|
|
" c.ano = ?-1 AND c.mes <= 12 AND ",
|
|
criterio CLIPPED," GROUP BY 1,2,3"
|
|
|
|
PREPARE comando6 FROM selec6
|
|
DECLARE busca6 CURSOR FOR comando6
|
|
OPEN busca6 USING ano1
|
|
|
|
START REPORT histori_pt TO "C:\\archivo"
|
|
|
|
DISPLAY "<< >>" AT 19,14
|
|
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
|
|
AT 19,14 ATTRIBUTE(REVERSE)
|
|
|
|
##### Creando el loop de busqueda ###########
|
|
|
|
WHILE status != NOTFOUND
|
|
FETCH busca4 INTO histo.*
|
|
|
|
IF status = notfound THEN
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
OUTPUT TO REPORT histori_pt(histo.*)
|
|
END WHILE
|
|
LET STATUS = 0
|
|
# Busqueda para el ano anterior
|
|
WHILE status != NOTFOUND
|
|
FETCH busca6 INTO histo1.*
|
|
|
|
IF status = notfound THEN
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
LET ano2 = ano1 -1
|
|
display ano2,histo.* at 18,1
|
|
INSERT INTO cttb00002 (ano,venta,mes,nomenclatura,costo,
|
|
us_crea,fech_crea)
|
|
VALUES
|
|
(ano2,histo1.*,user,current)
|
|
|
|
END WHILE
|
|
FINISH REPORT histori_pt
|
|
|
|
|
|
# Impresion de los trimestres
|
|
LET STATUS = 0
|
|
LET impresion = UPSHIFT(impresion)
|
|
IF impresion = "S" THEN
|
|
LET selec5 =
|
|
"SELECT a.ventas,c.mes,b.nomenclatura,AVG(a.costo_lq) ",
|
|
"FROM cttb00036 a,iptb00002 b,prdtable c ",
|
|
"WHERE a.cod_n = b.cod_n AND a.cod_grupo=b.cod_grupo AND ",
|
|
" a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_sec AND ",
|
|
" a.status_t IS NULL AND a.fecha_lq BETWEEN c.fecha_inicio AND ",
|
|
" c.fecha_corte AND c.ano = ? AND c.mes <= ? AND ",
|
|
criterio CLIPPED," GROUP BY 1,2,3",
|
|
" ORDER BY 1,3,2"
|
|
|
|
DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>"
|
|
AT 19,14 ATTRIBUTE (REVERSE,BOLD)
|
|
|
|
PREPARE comando5 FROM selec5
|
|
DECLARE busca5 CURSOR FOR comando5
|
|
OPEN busca5 USING ano1,mes1
|
|
|
|
# Borra tabla temporal que contiene los costos por nomenclatura
|
|
|
|
START REPORT trimestre TO PIPE "lp -dcentral"
|
|
|
|
WHILE status != NOTFOUND
|
|
FETCH busca5 INTO histo.*
|
|
|
|
IF status = notfound THEN
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
|
|
# Inserta los costos para los trimestres
|
|
INSERT INTO cttb00002 (ano,venta,mes,nomenclatura,costo,
|
|
us_crea,fech_crea)
|
|
VALUES
|
|
(ano1,histo.*,user,current)
|
|
OUTPUT TO REPORT trimestre(histo.*)
|
|
|
|
END WHILE
|
|
|
|
FINISH REPORT trimestre
|
|
END IF
|
|
|
|
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
|
|
|
|
####### Creando el formato para la salida de informacion #########
|
|
|
|
REPORT histori_pt(x)
|
|
DEFINE x RECORD
|
|
ventas CHAR(1),
|
|
mes2 INTEGER,
|
|
nomenclatura LIKE iptb00002.nomenclatura,
|
|
costo_lq DECIMAL(12,4)
|
|
END RECORD,
|
|
converti CHAR(1)
|
|
|
|
DEFINE promedio DECIMAL(8,3)
|
|
DEFINE costo_st DECIMAL(12,4)
|
|
#DEFINE mes ARRAY[7] OF SMALLINT
|
|
DEFINE fecha3,fecha4,fecha5 DATE
|
|
DEFINE i INTEGER
|
|
DEFINE labor,gasto,labor1,gasto1 DECIMAL(12,2)
|
|
DEFINE cantidad1 ARRAY[200] OF DECIMAL(12,3)
|
|
DEFINE cantidad2 ARRAY[200] OF DECIMAL(12,3)
|
|
DEFINE unidad,descrp1,nomb,nombre CHAR(15)
|
|
DEFINE descr CHAR(20)
|
|
DEFINE total,total2,total3,total4,total5,total6,total7,total8,total9
|
|
DECIMAL(13,8)
|
|
DEFINE fact_hombre,cod_grupo,hora_hombre,valor_real,factor_conv
|
|
DECIMAL(13,8)
|
|
DEFINE total1 INTEGER
|
|
DEFINE comp_on,normal,negrillas_on,negrillas_off CHAR(3)
|
|
|
|
OUTPUT
|
|
LEFT MARGIN 0
|
|
ORDER BY x.ventas,x.nomenclatura,x.mes2
|
|
|
|
FORMAT
|
|
PAGE HEADER
|
|
LET comp_on = ASCII 15
|
|
LET normal = ASCII 27,ASCII 80
|
|
LET negrillas_on = ASCII 27, ASCII 69
|
|
LET negrillas_off = ASCII 27, ASCII 70
|
|
LET l = (200 - LENGTH(p_compania.nombre CLIPPED))/2
|
|
PRINT COLUMN 1, comp_on,negrillas_on
|
|
PRINT COLUMN 1, "ctprrp029",
|
|
COLUMN l, p_compania.nombre CLIPPED,
|
|
COLUMN 206, "Pag. ",pageno using "###"
|
|
LET l = (200 - LENGTH("Sistema de Costos"))/2
|
|
PRINT COLUMN l, "Sistema de Costos",
|
|
COLUMN 206, today using "dd/mm/yy"
|
|
LET l = (200 - LENGTH("Historial de Costos Reales Productos Terminados"))/2
|
|
PRINT COLUMN l, "Historial de Costos Reales Productos Terminados",
|
|
COLUMN 206, time
|
|
PRINT COLUMN 94, "DEl ",fecha1 USING "dd/mm/yy", " Al ",
|
|
fecha2 USING "dd/mm/yy"
|
|
PRINT COLUMN 94, "Porcentaje Mayor a ",p_porciento using "###.##"
|
|
PRINT negrillas_off
|
|
|
|
PRINT COLUMN 1,
|
|
"----------------------------------------------------------------------------",
|
|
"----------------------------------------------------------------------------",
|
|
"------------------------------------------------------------------"
|
|
PRINT COLUMN 1, "Nomenclatura",
|
|
COLUMN 30, "|",
|
|
COLUMN 35, "Costo"
|
|
PRINT COLUMN 35, "Standard";
|
|
LET i = 44
|
|
LET fecha5 = fecha1
|
|
|
|
###### Loop para impresion en forma tabular ########
|
|
|
|
FOR idx = 1 to 12
|
|
|
|
LET mes3 = month(fecha5)
|
|
PRINT COLUMN i," ",fecha5 USING "mmm/yy","|";
|
|
|
|
LET fecha5 = fecha5 + 31
|
|
LET i = i + 10
|
|
END FOR
|
|
LET i = i + 5 + 6
|
|
PRINT COLUMN i-7, "Promedio",
|
|
COLUMN i+3, "Variacion %"
|
|
|
|
PRINT COLUMN 1,
|
|
"----------------------------------------------------------------------------",
|
|
"----------------------------------------------------------------------------",
|
|
"------------------------------------------------------------------"
|
|
|
|
BEFORE GROUP OF x.ventas
|
|
IF x.ventas = 1 THEN
|
|
PRINT COLUMN 1, "LOCALES"
|
|
ELSE
|
|
PRINT COLUMN 1, "EXPORTACION"
|
|
END IF
|
|
|
|
BEFORE GROUP OF x.nomenclatura
|
|
LET costo_st = 0
|
|
LET promedio = 0
|
|
|
|
SELECT a.costo_st INTO costo_st
|
|
FROM cttb00038 a
|
|
WHERE a.nomenclatura matches x.nomenclatura and
|
|
a.ventas = x.ventas and
|
|
a.ano = ano1
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
SELECT MAX(a.material+a.labor+a.gastos) INTO costo_st
|
|
FROM iptb00004 a,iptb00002 b
|
|
WHERE a.cod_n = b.cod_n and a.cod_grupo = b.cod_grupo and
|
|
a.cod_tipo = b.cod_tipo and a.cod_sec = b.cod_sec and
|
|
a.ano = ano1 and a.status_t is null AND a.ventas = x.ventas AND
|
|
b.nomenclatura=x.nomenclatura
|
|
END IF
|
|
IF costo_st IS NULL THEN
|
|
LET costo_st = 0
|
|
END IF
|
|
|
|
AFTER GROUP OF x.mes2
|
|
LET idx = x.mes2
|
|
LET cantidad1[idx] = 0
|
|
LET cantidad1[idx] = x.costo_lq
|
|
|
|
IF cantidad1[idx] IS NULL THEN
|
|
LET cantidad1[idx] = 0
|
|
END IF
|
|
|
|
AFTER GROUP OF x.nomenclatura
|
|
LET promedio = GROUP AVG(x.costo_lq)
|
|
IF promedio > 0 THEN
|
|
LET porciento = ((promedio - costo_st)/promedio)*100
|
|
ELSE
|
|
LET porciento = 0
|
|
END IF
|
|
|
|
IF porciento < 0 THEN
|
|
LET porciento = porciento * -1
|
|
END IF
|
|
IF porciento >= p_porciento THEN
|
|
PRINT COLUMN 1, x.nomenclatura CLIPPED,
|
|
COLUMN 30, "|",
|
|
COLUMN 32, costo_st using "#,###.#####","|";
|
|
|
|
LET i = 44
|
|
FOR idx = 1 TO 12
|
|
IF cantidad1[idx] IS NULL THEN
|
|
LET cantidad1[idx] = 0
|
|
END IF
|
|
|
|
PRINT COLUMN i,cantidad1[idx] USING "#,##&.&&&", "|";
|
|
LET i = i + 9
|
|
LET cantidad1[idx] = 0
|
|
END FOR
|
|
PRINT COLUMN i,promedio using "##,###.#####",
|
|
COLUMN i+14,promedio - costo_st using "((,(((.####)",
|
|
COLUMN i+26+2, porciento using "###.##"
|
|
END IF
|
|
|
|
AFTER GROUP OF x.ventas
|
|
|
|
PRINT COLUMN 1,
|
|
"============================================================================",
|
|
"============================================================================",
|
|
"=================================================================="
|
|
|
|
ON LAST ROW
|
|
PRINT COLUMN 1,negrillas_off,normal
|
|
END REPORT
|
|
|
|
REPORT trimestre(x)
|
|
|
|
DEFINE x RECORD
|
|
ventas CHAR(1),
|
|
mes2 INTEGER,
|
|
nomenclatura LIKE iptb00002.nomenclatura,
|
|
costo_lq DECIMAL(12,4)
|
|
END RECORD,
|
|
prom_anterior,psuma,suma,p_costo_st DECIMAL(12,4),
|
|
trimestre1,trimestre2,trimestre3,trimestre4,
|
|
ppromedio,promedio DECIMAL(8,3),
|
|
cuenta_p,cuenta_mes SMALLINT,
|
|
nomen CHAR(10),
|
|
mes2 SMALLINT
|
|
DEFINE comp_on,normal,negrillas_on,negrillas_off CHAR(3)
|
|
|
|
OUTPUT
|
|
LEFT MARGIN 2
|
|
ORDER BY x.ventas,x.nomenclatura,x.mes2
|
|
|
|
FORMAT
|
|
PAGE HEADER
|
|
|
|
PRINT COLUMN 1, "ctprrp029",
|
|
COLUMN 42, " R A Y . O . V A C D O M I N I C A N A, S. A.",
|
|
COLUMN 120, "Pag. ",pageno using "###"
|
|
PRINT COLUMN 42, " Sistema de Costos",
|
|
COLUMN 120, today using "dd/mm/yy"
|
|
PRINT COLUMN 42, " Historial de Costos Reales Por Trimestre ",
|
|
COLUMN 120, time
|
|
PRINT COLUMN 54, "DEl ",fecha1 USING "dd/mm/yy", " Al ",
|
|
fecha2 USING "dd/mm/yy"
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 15, "COSTO",
|
|
COLUMN 90, "PROMEDIO",
|
|
COLUMN 110, "PROMEDIO"
|
|
|
|
PRINT COLUMN 15, "STANDARD",
|
|
COLUMN 30,"1er TRIMESTRE",
|
|
COLUMN 45, "2do TRIMESTRE",
|
|
COLUMN 60, "3er TRIMESTRE",
|
|
COLUMN 75, "4To. TRIMESTRE",
|
|
COLUMN 90, YEAR(fecha2),
|
|
COLUMN 110, YEAR(fecha2) - 1
|
|
|
|
PRINT COLUMN 15, "========",
|
|
COLUMN 30,"=============",
|
|
COLUMN 45, "=============",
|
|
COLUMN 60, "=============",
|
|
COLUMN 75, "==============",
|
|
COLUMN 90, "==============",
|
|
COLUMN 110, "=============="
|
|
|
|
PRINT COLUMN 1, "Nomenclatura"
|
|
|
|
SKIP 1 LINE
|
|
BEFORE GROUP OF x.ventas
|
|
IF x.ventas = 1 THEN
|
|
PRINT COLUMN 1,"LOCALES"
|
|
SKIP 1 LINE
|
|
ELSE
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 1,"EXPORTACION"
|
|
SKIP 1 LINE
|
|
END IF
|
|
BEFORE GROUP OF x.nomenclatura
|
|
LET trimestre1 = 0
|
|
LET trimestre2 = 0
|
|
LET trimestre3 = 0
|
|
LET trimestre4 = 0
|
|
|
|
LET nomen = x.nomenclatura clipped
|
|
IF psuma IS NULL THEN
|
|
LET psuma = 0
|
|
END IF
|
|
IF cuenta_p IS NULL THEN
|
|
LET cuenta_p = 0
|
|
END IF
|
|
# Busca el promedio del ano anterior por nomenclatura
|
|
SELECT AVG(a.costo) INTO prom_anterior
|
|
FROM cttb00002 a
|
|
WHERE a.ano = ano1-1 AND
|
|
a.nomenclatura matches nomen and
|
|
a.venta = x.ventas
|
|
#---------------------------------------------------------------------------
|
|
SELECT AVG(a.costo) INTO trimestre1
|
|
FROM cttb00002 a
|
|
WHERE a.ano = ano1 AND a.mes <= 3 AND
|
|
a.nomenclatura matches nomen and
|
|
a.venta = x.ventas
|
|
|
|
IF trimestre1 IS NOT NULL THEN
|
|
LET cuenta_p = cuenta_p + 1
|
|
LET psuma = psuma + trimestre1
|
|
END IF
|
|
IF mes1 > 3 or mes1 <= 6 THEN
|
|
LET mes2 = 6
|
|
IF mes1 < 6 THEN
|
|
LET mes2 = mes1
|
|
END IF
|
|
|
|
SELECT AVG(a.costo) INTO trimestre2
|
|
FROM cttb00002 a
|
|
WHERE a.ano = ano1 AND a.mes between 4 and mes2 AND
|
|
a.nomenclatura matches nomen and
|
|
a.venta = x.ventas
|
|
|
|
IF trimestre2 IS NOT NULL THEN
|
|
LET cuenta_p = cuenta_p + 1
|
|
LET psuma = psuma + trimestre2
|
|
END IF
|
|
END IF
|
|
|
|
IF mes1 > 6 or mes1 <= 9 THEN
|
|
LET mes2 = 9
|
|
IF mes1 < 9 THEN
|
|
LET mes2 = mes1
|
|
END IF
|
|
SELECT AVG(a.costo) INTO trimestre3
|
|
FROM cttb00002 a
|
|
WHERE a.ano = ano1 AND a.mes between 7 and mes2 AND
|
|
a.nomenclatura matches nomen and
|
|
a.venta = x.ventas
|
|
|
|
IF trimestre3 IS NOT NULL THEN
|
|
LET cuenta_p = cuenta_p + 1
|
|
LET psuma = psuma + trimestre3
|
|
END IF
|
|
END IF
|
|
|
|
IF mes1 > 9 or mes1 <= 12 THEN
|
|
LET mes2 = 12
|
|
IF mes1 < 12 THEN
|
|
LET mes2 = mes1
|
|
END IF
|
|
|
|
SELECT AVG(a.costo) INTO trimestre4
|
|
FROM cttb00002 a
|
|
WHERE a.ano = ano1 AND a.mes between 10 and mes2 AND
|
|
a.nomenclatura matches nomen and
|
|
a.venta = x.ventas
|
|
|
|
IF trimestre4 IS NOT NULL THEN
|
|
LET cuenta_p = cuenta_p + 1
|
|
LET psuma = psuma + trimestre4
|
|
END IF
|
|
END IF
|
|
|
|
LET promedio = 0
|
|
LET suma = 0
|
|
LET cuenta_mes = 0
|
|
LET p_costo_st = 0
|
|
IF psuma is null THEN
|
|
LET psuma = 0
|
|
END IF
|
|
|
|
SELECT a.costo_st INTO p_costo_st
|
|
FROM cttb00038 a
|
|
WHERE a.nomenclatura matches x.nomenclatura and
|
|
a.ventas = x.ventas and
|
|
a.ano = ano1
|
|
|
|
IF p_costo_st IS NULL THEN
|
|
LET p_costo_st = 0
|
|
END IF
|
|
|
|
PRINT COLUMN 1, nomen,
|
|
COLUMN 15, p_costo_st using "##.&&&";
|
|
AFTER GROUP OF x.nomenclatura
|
|
|
|
IF psuma > 0 THEN
|
|
LET ppromedio = psuma/cuenta_p
|
|
END IF
|
|
|
|
PRINT COLUMN 30, trimestre1 using "##.&&&",
|
|
COLUMN 45, trimestre2 using "##.&&&",
|
|
COLUMN 60, trimestre3 using "##.&&&",
|
|
COLUMN 75, trimestre4 using "##.&&&",
|
|
COLUMN 90, ppromedio using "##.&&&",
|
|
COLUMN 110, prom_anterior using "##.&&&"
|
|
LET psuma = 0
|
|
LET cuenta_p = 0
|
|
ON LAST ROW
|
|
PRINT COLUMN 1,negrillas_off,normal
|
|
END REPORT
|
|
|