Files
MBS/PROYECTO/ctdir/ctprrp015.4gl
T

913 lines
28 KiB
Plaintext

{
--------------------------------------------------------------------------------
PROGRAMA : CTPRRP015
DESCRIPCION : Reporte costo unitario real (Produccion)
OBSERVACION : Este reporte toma las informaciones del codigo de
movimiento de produccion 20
PROGRAMADOR : Juan F. Soto
FECHA : Agosto 23, 1993
--------------------------------------------------------------------------------
}
GLOBALS
"ctprgb000.4gl"
DEFINE salir,salir1,salir2,salir3 CHAR(1)
DEFINE selec1,selec2,selec3 CHAR(1000)
DEFINE p_ano CHAR(4)
DEFINE idx_1,idx_2,j,p_mes,engano,idx1,idx2,idx3 SMALLINT
# Variables para hacer calculo de variacion en el material
DEFINE total_m,total_l,total_g,total_1,total_2,total_3 DECIMAL(12,3)
DEFINE fecha_1,fecha_2 DATE
# Definicion del arreglo para la impresion de las informaciones
DEFINE arr_calc ARRAY[70] OF RECORD
cod_mov SMALLINT,
l_pilas LIKE iptb00002.nomenclatura,
l_ventas DECIMAL(12,3),
l_material_std DECIMAL(12,3),
l_porc_mat DECIMAL(8,2),
l_variacion_mat DECIMAL(12,3),
l_costo_mat_real DECIMAL(12,3),
l_costo_unitario DECIMAL(8,3),
l_labor DECIMAL(12,3),
l_porc_lab DECIMAL(8,2),
l_variacion_lab DECIMAL(12,3),
l_costo_lab_real DECIMAL(12,3),
l_costo_primo_real DECIMAL(12,3),
l_costo_primo_unit DECIMAL(8,3),
l_gastos DECIMAL(12,3),
l_porc_gas DECIMAL(8,2),
l_variacion_gas DECIMAL(12,3),
l_gastos_real DECIMAL(12,3),
l_costo_total DECIMAL(12,3),
l_costo_unit_var DECIMAL(8,3),
l_costo_unit_fijo DECIMAL(8,3),
l_costo_unit_total DECIMAL(8,3)
END RECORD
FUNCTION ctprrp015()
# Definicion del record para el select de las ventas del mes
DEFINE reg_imp RECORD
pilas LIKE iptb00002.nomenclatura,
cantidad DECIMAL(12,3),
valor_m DECIMAL(12,3),
valor_l DECIMAL(12,3),
valor_g DECIMAL(12,3)
END RECORD
DEFINE reg1_imp RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
pilas LIKE iptb00002.nomenclatura
END RECORD
DEFINE reg3_imp RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
material DECIMAL(12,4),
labor DECIMAL(12,4),
gastos DECIMAL(12,4)
END RECORD
DEFINE reg2_imp RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
cantidad_2 DECIMAL(12,2)
END RECORD
DEFINE ventas RECORD
pilas LIKE iptb00002.nomenclatura,
cantidad DECIMAL(12,3),
valor_m DECIMAL(12,3),
valor_l DECIMAL(12,3),
valor_g DECIMAL(12,3),
cod_mov LIKE iptb00006.cod_mov
END RECORD
OPTIONS
FORM LINE 9,
ERROR LINE 24
CALL pantalla()
DISPLAY "ctprrp015" AT 4,3
DISPLAY "Costo Unitario Real (Prod.)" AT 6,26
OPEN FORM ctfmrp007 FROM "ctfmrp015"
DISPLAY FORM ctfmrp007
LET tipo_papel = 2
CALL msgrp000(tipo_papel)
# Entrada del mes del reporte y el ano, valores dados en el reporte
INPUT BY NAME p_mes,p_ano,total_1,total_2,total_3
AFTER FIELD p_mes
IF p_mes is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD p_mes
END IF
AFTER FIELD p_ano
IF p_ano is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD p_ano
END IF
SELECT fecha_inicio,fecha_corte INTO fecha_1,fecha_2 FROM prdtable
WHERE ano = p_ano AND mes = p_mes
LET p_fechas = fecha_2 using "ddmmyy"
CALL prd()
IF bandera = 1 THEN
LET bandera = 0
NEXT FIELD fecha
END IF
AFTER FIELD total_1
IF total_1 is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD total_1
END IF
AFTER FIELD total_2
IF total_2 is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD total_2
END IF
AFTER FIELD total_3
IF total_3 is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD total_3
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
LET p_fechas = fecha_2 using "ddmmyy"
CALL prd()
IF bandera = 1 THEN
LET bandera = 0
NEXT FIELD p_mes
END IF
EXIT INPUT
END INPUT
# Borra los datos de esta tabla que contiene informaciones generada por este
# repoorte para el reporte ctprrp012
LET selec1 = "SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.nomenclatura ",
"FROM iptb00002 a WHERE a.status_t IS NULL ORDER BY 1,2,3,4 "
DISPLAY "Buscando nomenclatura... Espere Por Favor" AT 19,14
PREPARE comando1 FROM selec1
DECLARE busca1 SCROLL CURSOR FOR comando1
OPEN busca1
LET selec3 = "SELECT UNIQUE a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ",
"MAX(a.material),MAX(a.labor),MAX(a.gastos) ",
"FROM iptb00004 a ",
"WHERE a.status_t IS NULL AND a.ventas = 1 AND a.ano = ? AND ",
" a.mes_fin = 12 GROUP BY 1,2,3,4 ORDER BY 1,2,3,4 "
DISPLAY "Buscando Costos Std.... Espere Por Favor" AT 19,14
PREPARE comando3 FROM selec3
DECLARE busca3 SCROLL CURSOR FOR comando3
OPEN busca3 USING p_ano
LET selec2 = "SELECT UNIQUE a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ",
"SUM(a.cantidad_2) ",
"FROM iptb00006 a WHERE a.status_t IS NULL AND a.cod_mov=20 AND ",
" a.fecha BETWEEN ? AND ? ",
"GROUP BY 1,2,3,4 ORDER BY 1,2,3,4 "
DISPLAY "Buscando Cantidad.... Espere Por Favor" AT 19,14
PREPARE comando2 FROM selec2
DECLARE busca2 CURSOR FOR comando2
OPEN busca2 USING fecha_1,fecha_2
DELETE FROM cttb00021 WHERE mes = p_mes
DISPLAY "<< >>" AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14
ATTRIBUTE (BOLD)
START REPORT varia1 TO "C:\\archivo"
LET idx = 1
LET salir = "N"
LET idx_1 = 0
LET total_m = 0
LET total_l = 0
LET total_g = 0
LET salir1 = "N"
WHILE salir1 != "S"
FETCH busca2 INTO reg2_imp.*
IF status = notfound THEN
LET salir1 = "S"
LET idx_1 = 1
EXIT WHILE
END IF
IF reg2_imp.cantidad_2 IS NOT NULL THEN
LET idx = idx + 1
LET ventas.cantidad = reg2_imp.cantidad_2
LET ventas.valor_m = 0
LET ventas.valor_l = 0
LET ventas.valor_g = 0
LET ventas.cod_mov = 20
LET idx2 = 1
LET salir2 = "N"
WHILE salir2 != "S"
FETCH ABSOLUTE idx2 busca1 INTO reg1_imp.*
IF STATUS = NOTFOUND THEN
LET salir2 = "S"
LET idx2 = 1
LET STATUS = 0
EXIT WHILE
END IF
LET idx2 = idx2 + 1
IF reg2_imp.cod_n = reg1_imp.cod_n AND
reg2_imp.cod_grupo = reg1_imp.cod_grupo AND
reg2_imp.cod_tipo = reg1_imp.cod_tipo AND
reg2_imp.cod_sec = reg1_imp.cod_sec THEN
LET ventas.pilas = reg1_imp.pilas
LET idx2 = 1
LET salir2 = "S"
EXIT WHILE
END IF
END WHILE
LET idx3 = 1
LET salir3 = "N"
WHILE salir3 != "S"
FETCH ABSOLUTE idx3 busca3 INTO reg3_imp.*
IF STATUS = NOTFOUND THEN
LET salir3 = "S"
LET idx3 = 1
LET STATUS = 0
EXIT WHILE
END IF
LET idx3 = idx3 + 1
IF reg2_imp.cod_n = reg3_imp.cod_n AND
reg2_imp.cod_grupo = reg3_imp.cod_grupo AND
reg2_imp.cod_tipo = reg3_imp.cod_tipo AND
reg2_imp.cod_sec = reg3_imp.cod_sec THEN
LET ventas.valor_m = reg2_imp.cantidad_2 * reg3_imp.material
LET ventas.valor_l = reg2_imp.cantidad_2 * reg3_imp.labor
LET ventas.valor_g = reg2_imp.cantidad_2 * reg3_imp.gastos
LET idx3 = 1
LET salir3 = "S"
EXIT WHILE
END IF
END WHILE
IF ventas.valor_m IS NULL THEN
LET ventas.valor_m = 0
END IF
IF ventas.valor_l IS NULL THEN
LET ventas.valor_l = 0
END IF
IF ventas.valor_g IS NULL THEN
LET ventas.valor_g = 0
END IF
# Validacion de variables para la unidades vendidas y costo materiales,
# costo labor, costo gasto indirecto
LET arr_calc[idx].cod_mov = ventas.cod_mov
LET arr_calc[idx].l_pilas = ventas.pilas
LET arr_calc[idx].l_ventas = ventas.cantidad / 1000
LET arr_calc[idx].l_material_std = ventas.valor_m/1000
LET arr_calc[idx].l_labor = ventas.valor_l/1000
LET arr_calc[idx].l_gastos = ventas.valor_g/1000
LET total_m = arr_calc[idx].l_material_std + total_m
LET total_l = arr_calc[idx].l_labor + total_l
LET total_g = arr_calc[idx].l_gastos + total_g
DISPLAY "Material ",ventas.pilas," ",ventas.valor_m USING "&&&,&&&,&&&.&&",
"|",total_m USING "&&&,&&&,&&&.&&"
END IF
END WHILE
FOR j = 1 TO idx
# Calculos para las ventas locales
# Calculo material
#IF arr_calc[j].cod_mov = 30 THEN
IF total_m > 0 THEN
LET arr_calc[j].l_porc_mat = (arr_calc[j].l_material_std / total_m) * 100
LET arr_calc[j].l_variacion_mat = (arr_calc[j].l_porc_mat * total_1)/100
ELSE
LET arr_calc[j].l_porc_mat = 0
LET arr_calc[j].l_variacion_mat = 0
END IF
LET arr_calc[j].l_costo_mat_real = arr_calc[j].l_material_std +
arr_calc[j].l_variacion_mat
IF arr_calc[j].l_ventas > 0 THEN
LET arr_calc[j].l_costo_unitario = arr_calc[j].l_costo_mat_real /
arr_calc[j].l_ventas
ELSE
LET arr_calc[j].l_costo_unitario = 0
END IF
# Calculo de Labor
IF total_l > 0 THEN
LET arr_calc[j].l_porc_lab = (arr_calc[j].l_labor / total_l) * 100
LET arr_calc[j].l_variacion_lab = (arr_calc[j].l_porc_lab * total_2)/100
ELSE
LET arr_calc[j].l_porc_lab = 0
LET arr_calc[j].l_variacion_lab = 0
END IF
LET arr_calc[j].l_costo_lab_real = arr_calc[j].l_labor +
arr_calc[j].l_variacion_lab
LET arr_calc[j].l_costo_primo_real = arr_calc[j].l_costo_lab_real +
arr_calc[j].l_costo_lab_real
IF arr_calc[j].l_ventas > 0 THEN
LET arr_calc[j].l_costo_primo_unit = arr_calc[j].l_costo_primo_real /
arr_calc[j].l_ventas
ELSE
LET arr_calc[j].l_costo_primo_unit = 0
END IF
# Gastos indirectos
IF total_g > 0 THEN
LET arr_calc[j].l_porc_gas = (arr_calc[j].l_gastos / total_g) * 100
LET arr_calc[j].l_variacion_gas = (arr_calc[j].l_porc_gas * total_3)/100
ELSE
LET arr_calc[j].l_porc_gas = 0
LET arr_calc[j].l_variacion_gas = 0
END IF
LET arr_calc[j].l_gastos_real = arr_calc[j].l_gastos +
arr_calc[j].l_variacion_gas
# Costos totales
LET arr_calc[j].l_costo_total = arr_calc[j].l_costo_mat_real +
arr_calc[j].l_costo_lab_real +
arr_calc[j].l_gastos_real
LET arr_calc[j].l_costo_unit_var = arr_calc[j].l_costo_primo_unit
IF arr_calc[j].l_ventas > 0 THEN
LET arr_calc[j].l_costo_unit_total = arr_calc[j].l_costo_total /
arr_calc[j].l_ventas
LET arr_calc[j].l_costo_unit_fijo = arr_calc[j].l_gastos_real /
arr_calc[j].l_ventas
ELSE
LET arr_calc[j].l_costo_unit_total = 0
LET arr_calc[j].l_costo_unit_fijo = 0
END IF
END FOR
LET engano = 1
OUTPUT TO REPORT varia1(engano)
FINISH REPORT varia1
FOR j = 1 TO idx
INSERT INTO cttb00021
VALUES ("1",p_mes,arr_calc[j].l_pilas,arr_calc[j].l_costo_mat_real,
arr_calc[j].l_costo_lab_real,arr_calc[j].l_costo_unit_fijo,
user,current)
END FOR
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
REPORT varia1(engana)
{
------------------------------------------------------------------------------
Esta rutina del reporte solamente calcula los totales verticalmente de
cada renglon especificado.
El reporte viene con todos sus calculos ya hechos en la funcion anterior
este se imprime por renglon en forma horizontal.
Por la complejidad de los calculos y los requerimientos del usuario se
utlizan arreglos para el calculo e impresion del mismo.
Por la razon anteriormente citada el reporte esta sumamente largo y
podria ser incomodo de entender por esta razon favor de comunicarse con
el Ing. Juan F. Soto al Tel. 598-1163.
------------------------------------------------------------------------------
}
DEFINE e,i,p,k,o,engana,l SMALLINT
DEFINE normal,comp_on CHAR(3)
DEFINE imprime CHAR(1)
# Definicion de variables para los totales
DEFINE t_ventas,t_porc_m,t_porc_l,t_porc_g,t_costo_mat_real,t_costo_lab_real,
t_costo_primo_real,t_costo_primo_unit,t_costo_unit_mat,
t_gastos_real,t_costos_totales,t_costo_unit_var,
t_costo_unit_fijo,t_costo_unit_total DECIMAL (12,3)
OUTPUT
TOP MARGIN 3
ORDER BY engana
FORMAT
PAGE HEADER
LET idx = idx - 1
LET comp_on = ASCII 15
LET l = ((idx * 14) - 26)/2
LET k = ((idx * 14) - 30)/2
LET p = ((idx * 14) - 18)/2
LET l = l + 17
LET k = k + 17
LET p = p + 17
PRINT comp_on
PRINT COLUMN 1, "ctprrp015"
PRINT COLUMN l, p_compania.nombre;
# Cuadre de la fecha del dia y la hora
LET e = 0
FOR j = 1 to idx
IF arr_calc[j].cod_mov = 1 THEN
LET o = o + 1
END IF
IF arr_calc[j].cod_mov = 2 THEN
LET e = e + 1
END IF
END FOR
LET i = (idx * 12) + 26 + 17
PRINT COLUMN i, today using "dd/mm/yy"
LET k = k - 14
PRINT COLUMN k, "DETERMINACION COSTOS UNITARIOS DE PRODUCCION" ,
COLUMN i, time
PRINT COLUMN p, "VALOR EN MILES RD$"
SKIP 1 LINE
SELECT descrip INTO descrip1 FROM mestable WHERE mes = p_mes
PRINT COLUMN 1, "Mes de ",descrip1 clipped," de ",p_ano
LET l = 1
FOR j = 1 to idx
PRINT COLUMN l, "--------------";
LET l = l + 14
END FOR
PRINT COLUMN l, "-----------------------------"
LET t_ventas = 0
LET t_porc_m = 0
LET t_porc_l = 0
LET t_porc_g = 0
LET t_costo_mat_real = 0
LET t_costo_unit_mat = 0
LET t_costo_lab_real = 0
LET t_costo_primo_real = 0
LET t_costo_primo_unit = 0
LET t_gastos_real = 0
LET t_costos_totales = 0
LET t_costo_unit_var = 0
LET t_costo_unit_fijo = 0
LET t_costo_unit_total = 0
BEFORE GROUP OF engana
LET imprime = "N"
# Determinar el cuadre del encabezado MERCADO EXPORTACION
LET l = 0
LET k = 0
FOR j = 1 to idx
IF arr_calc[j].cod_mov = 1 THEN
LET l = l + 1
END IF
IF arr_calc[j].cod_mov = 2 THEN
LET k = k + 1
END IF
END FOR
LET l = l * 12
LET k = (((k * 12)+l) - 19)/2
#----------------------------------------------------------------------------
LET l = 1
FOR j = 1 to idx
PRINT COLUMN l, "--------------";
LET l = l + 14
END FOR
PRINT COLUMN l, "-----------------------------"
LET l = 30
FOR j = 1 TO idx
IF imprime = "N" THEN
IF arr_calc[j].cod_mov = 2 THEN
LET imprime = "S"
PRINT COLUMN l+3, "|";
LET imprime = "S"
END IF
END IF
PRINT COLUMN l+6, "Pila";
LET l = l + 12
END FOR
PRINT COLUMN l + 9, "COSTO"
# Aqui se prepara para imprimir los nombres de las pilas
LET imprime = "N"
LET l = 30
FOR j = 1 TO idx
IF imprime = "N" THEN
IF arr_calc[j].cod_mov = 2 THEN
LET imprime = "S"
PRINT COLUMN l+2, "|";
END IF
END IF
PRINT COLUMN l+6, arr_calc[j].l_pilas;
LET l = l + 12
END FOR
PRINT COLUMN l+9, "TOTAL"
LET l = 1
FOR j = 1 to idx
PRINT COLUMN l, "--------------";
LET l = l + 14
END FOR
PRINT COLUMN l, "-----------------------------"
LET imprime = "N"
# Impresion del detalle
# de cada renglon del reporte
# Aqui se prepara para imprimir las unidades vendias de cada pila
LET l = 30
PRINT COLUMN 1, "Unidades Producidas";
FOR j = 1 TO idx
IF imprime = "N" THEN
IF arr_calc[j].cod_mov = 2 THEN
LET imprime = "S"
PRINT COLUMN l+3, "|";
END IF
END IF
PRINT COLUMN l, arr_calc[j].l_ventas using "###,###.###";
LET t_ventas = t_ventas + arr_calc[j].l_ventas
LET l = l + 12
END FOR
PRINT COLUMN l+4, t_ventas using "---,---.###"
# Aqui se prepara para imprimir los costos de cada pila en cuanto a material
LET imprime = "N"
LET l = 30
SKIP 1 LINE
PRINT COLUMN 1, "Material al std";
FOR j = 1 TO idx
IF imprime = "N" THEN
IF arr_calc[j].cod_mov = 2 THEN
LET imprime = "S"
PRINT COLUMN l+3, "|";
END IF
END IF
PRINT COLUMN l, arr_calc[j].l_material_std using "###,###.###";
LET l = l + 12
END FOR
PRINT COLUMN l+4, total_m using "###,###.###"
# Aqui se prepara para imprimir los porcientos de cada pila
LET imprime = "N"
LET l = 30
PRINT COLUMN 1, "Porciento del Total";
FOR j = 1 TO idx
IF imprime = "N" THEN
IF arr_calc[j].cod_mov = 2 THEN
LET imprime = "S"
PRINT COLUMN l+3, "|";
END IF
END IF
PRINT COLUMN l+4, arr_calc[j].l_porc_mat using "#,###.#","%";
LET t_porc_m = arr_calc[j].l_porc_mat + t_porc_m
LET l = l + 12
END FOR
PRINT COLUMN l+4, t_porc_m using "---,---.#"
# Aqui se prepara para imprimir las variaciones del costo del material
LET imprime = "N"
LET l = 30
PRINT COLUMN 1, "Variacion en Material";
FOR j = 1 TO idx
IF imprime = "N" THEN
IF arr_calc[j].cod_mov = 2 THEN
LET imprime = "S"
PRINT COLUMN l+3, "|";
END IF
END IF
PRINT COLUMN l, arr_calc[j].l_variacion_mat using "---,---.###";
LET l = l + 12
END FOR
PRINT COLUMN l+4, total_1 using "---,---.###"
# Aqui se prepara para imprimir las costo material real
LET imprime = "N"
LET l = 30
SKIP 1 LINE
PRINT COLUMN 1, "Costo Material al Real";
FOR j = 1 TO idx
IF imprime = "N" THEN
IF arr_calc[j].cod_mov = 2 THEN
LET imprime = "S"
PRINT COLUMN l+3, "|";
END IF
END IF
PRINT COLUMN l, arr_calc[j].l_costo_mat_real using "---,---.###";
LET t_costo_mat_real = arr_calc[j].l_costo_mat_real + t_costo_mat_real
LET l = l + 12
# Aqui se guarda las informaciones del costo real del material,
# costo real de la labor, costo fijo unitario
# para utilizarse en otro reporte
END FOR
PRINT COLUMN l+4, t_costo_mat_real using "---,---.###"
# Aqui se prepara para imprimir las costo material real
LET imprime = "N"
LET l = 30
SKIP 1 LINE
PRINT COLUMN 1, "Costo Unitario Real en Cuanto"
PRINT COLUMN 1, "a Materia Prima...";
FOR j = 1 TO idx
IF imprime = "N" THEN
IF arr_calc[j].cod_mov = 2 THEN
LET imprime = "S"
PRINT COLUMN l+3, "|";
END IF
END IF
PRINT COLUMN l+2, arr_calc[j].l_costo_unitario using "-,---.###";
LET t_costo_unit_mat = arr_calc[j].l_costo_unitario +
t_costo_unit_mat
LET l = l + 12
END FOR
PRINT COLUMN l+4, t_costo_unit_mat using "---,---.###"
# Aqui se prepara para imprimir la labor directa al eal
LET imprime = "N"
LET l = 30
SKIP 1 LINE
PRINT COLUMN 1, "Labor Directa al std";
FOR j = 1 TO idx
IF imprime = "N" THEN
IF arr_calc[j].cod_mov = 2 THEN
LET imprime = "S"
PRINT COLUMN l+3, "|";
END IF
END IF
PRINT COLUMN l, arr_calc[j].l_labor using "###,###.###";
LET l = l + 12
END FOR
# Aqui se prepara para imprimir el total del porciento
PRINT COLUMN l+4, total_l using "###,###.###"
LET imprime = "N"
LET l = 30
PRINT COLUMN 1, "Porciento del Total";
FOR j = 1 TO idx
IF imprime = "N" THEN
IF arr_calc[j].cod_mov = 2 THEN
LET imprime = "S"
PRINT COLUMN l+3, "|";
END IF
END IF
PRINT COLUMN l+4, arr_calc[j].l_porc_lab using "#,###.#","%";
LET t_porc_l = arr_calc[j].l_porc_lab + t_porc_l
LET l = l + 12
END FOR
PRINT COLUMN l+4, t_porc_l using "---,---.#"
# Aqui se prepara para imprimir la variacion en labor
LET imprime = "N"
LET l = 30
PRINT COLUMN 1, "Variacion en Labor ";
FOR j = 1 TO idx
IF imprime = "N" THEN
IF arr_calc[j].cod_mov = 2 THEN
LET imprime = "S"
PRINT COLUMN l+3, "|";
END IF
END IF
PRINT COLUMN l, arr_calc[j].l_variacion_lab using "---,---.###";
LET l = l + 12
END FOR
PRINT COLUMN l+4, total_2 using "---,---.###"
# Aqui se prepara para imprimir Costo de labor
LET imprime = "N"
LET l = 30
SKIP 1 LINE
PRINT COLUMN 1, "Costo Labor al Real";
FOR j = 1 TO idx
IF imprime = "N" THEN
IF arr_calc[j].cod_mov = 2 THEN
LET imprime = "S"
PRINT COLUMN l+3, "|";
END IF
END IF
PRINT COLUMN l+2, arr_calc[j].l_costo_lab_real using "--,---.###";
LET t_costo_lab_real = arr_calc[j].l_costo_lab_real + t_costo_lab_real
LET l = l + 12
END FOR
PRINT COLUMN l+4, t_costo_lab_real using "---,---.###"
# Aqui se prepara para imprimir Costo primo real
LET imprime = "N"
LET l = 30
SKIP 1 LINE
PRINT COLUMN 1, "Costo Primo al Real";
FOR j = 1 TO idx
IF imprime = "N" THEN
IF arr_calc[j].cod_mov = 2 THEN
LET imprime = "S"
PRINT COLUMN l+3, "|";
END IF
END IF
PRINT COLUMN l, arr_calc[j].l_costo_primo_real using "---,---.###";
LET t_costo_primo_real = arr_calc[j].l_costo_primo_real +
t_costo_primo_real
LET l = l + 12
END FOR
PRINT COLUMN l+4, t_costo_primo_real using "---,---.###"
# Aqui se prepara para imprimir Costo primo unitario real
LET imprime = "N"
LET l = 30
SKIP 1 LINE
PRINT COLUMN 1, "Costo Primo Unitario al Real";
FOR j = 1 TO idx
IF imprime = "N" THEN
IF arr_calc[j].cod_mov = 2 THEN
LET imprime = "S"
PRINT COLUMN l+3, "|";
END IF
END IF
PRINT COLUMN l, arr_calc[j].l_costo_primo_unit using "---,---.###";
LET t_costo_primo_unit = arr_calc[j].l_costo_primo_unit +
t_costo_primo_unit
LET l = l + 12
END FOR
PRINT COLUMN l+4, t_costo_primo_unit using "---,---.###"
# Aqui se prepara para imprimir Gastos Indirectos
LET imprime = "N"
LET l = 30
SKIP 1 LINE
PRINT COLUMN 1, "Gasto Indirectos";
FOR j = 1 TO idx
IF imprime = "N" THEN
IF arr_calc[j].cod_mov = 2 THEN
LET imprime = "S"
PRINT COLUMN l+3, "|";
END IF
END IF
PRINT COLUMN l, arr_calc[j].l_gastos using "---,---.###";
LET l = l + 12
END FOR
PRINT COLUMN l+4, total_g using "###,###.###"
# Aqui se prepara para imprimir Porciento Total
LET imprime = "N"
LET l = 30
PRINT COLUMN 1, "Porciento del Total";
FOR j = 1 TO idx
IF imprime = "N" THEN
IF arr_calc[j].cod_mov = 2 THEN
LET imprime = "S"
PRINT COLUMN l+3, "|";
END IF
END IF
PRINT COLUMN l+2, arr_calc[j].l_porc_gas using "#,###.#","%";
LET t_porc_g = arr_calc[j].l_porc_gas + t_porc_g
LET l = l + 12
END FOR
PRINT COLUMN l+4, t_porc_g using "---,---.#"
# Aqui se prepara para imprimir Variacion en Gasto
LET imprime = "N"
LET l = 30
PRINT COLUMN 1, "Variacion Gasto";
FOR j = 1 TO idx
IF imprime = "N" THEN
IF arr_calc[j].cod_mov = 2 THEN
LET imprime = "S"
PRINT COLUMN l+3, "|";
END IF
END IF
PRINT COLUMN l, arr_calc[j].l_variacion_gas using "---,---.###";
LET l = l + 12
END FOR
PRINT COLUMN l+4, total_3 using "---,---.###"
# Aqui se prepara para imprimir Gasto Indirecto Real
LET imprime = "N"
LET l = 30
SKIP 1 LINE
PRINT COLUMN 1, "Gasto Indirecto Real";
FOR j = 1 TO idx
IF imprime = "N" THEN
IF arr_calc[j].cod_mov = 2 THEN
LET imprime = "S"
PRINT COLUMN l+3, "|";
END IF
END IF
PRINT COLUMN l+1, arr_calc[j].l_gastos_real using "--,---.###";
LET t_gastos_real = arr_calc[j].l_gastos_real + t_gastos_real
LET l = l + 12
END FOR
PRINT COLUMN l+4, t_gastos_real using "---,---.###"
# Aqui se prepara para imprimir Costo Total
LET imprime = "N"
LET l = 30
SKIP 1 LINE
PRINT COLUMN 1, "Costo Totales ";
FOR j = 1 TO idx
IF imprime = "N" THEN
IF arr_calc[j].cod_mov = 2 THEN
LET imprime = "S"
PRINT COLUMN l+3, "|";
END IF
END IF
PRINT COLUMN l, arr_calc[j].l_costo_total using "---,---.###";
LET t_costos_totales = arr_calc[j].l_costo_total + t_costos_totales
LET l = l + 12
END FOR
PRINT COLUMN l+4, t_costos_totales using "---,---.###"
# Aqui se prepara para imprimir Costo unitario variable real
LET imprime = "N"
LET l = 30
SKIP 1 LINE
PRINT COLUMN 1, "Costo Unitario Variable Real";
FOR j = 1 TO idx
IF imprime = "N" THEN
IF arr_calc[j].cod_mov = 2 THEN
LET imprime = "S"
PRINT COLUMN l+3, "|";
END IF
END IF
PRINT COLUMN l, arr_calc[j].l_costo_unit_var using "---,---.###";
LET t_costo_unit_var = arr_calc[j].l_costo_unit_var + t_costo_unit_var
LET l = l + 12
END FOR
PRINT COLUMN l+4, t_costo_unit_var using "---,---.###"
# Aqui se prepara para imprimir Costo unitario Fijo real
LET imprime = "N"
LET l = 30
SKIP 1 LINE
PRINT COLUMN 1, "Costo Unitario Fijo Real";
FOR j = 1 TO idx
IF imprime = "N" THEN
IF arr_calc[j].cod_mov = 2 THEN
LET imprime = "S"
PRINT COLUMN l+3, "|";
END IF
END IF
PRINT COLUMN l, arr_calc[j].l_costo_unit_fijo using "---,---.###";
LET t_costo_unit_fijo = arr_calc[j].l_costo_unit_fijo +
t_costo_unit_fijo
LET l = l + 12
END FOR
PRINT COLUMN l+4, t_costo_unit_fijo using "---,---.###"
# Aqui se prepara para imprimir Costo unitario Totla real
LET imprime = "N"
LET l = 30
SKIP 1 LINE
PRINT COLUMN 1, "Costo Unitario Total Real";
FOR j = 1 TO idx
IF imprime = "N" THEN
IF arr_calc[j].cod_mov = 2 THEN
LET imprime = "S"
PRINT COLUMN l+3, "|";
END IF
END IF
PRINT COLUMN l, arr_calc[j].l_costo_unit_total using "---,---.###";
LET t_costo_unit_total = arr_calc[j].l_costo_unit_total +
t_costo_unit_total
LET l = l + 12
END FOR
PRINT COLUMN l+4, t_costo_unit_total using "---,---.##"
# Aqui se prepara para imprimir Costo unitario Totla real
LET l = 1
FOR j = 1 to idx
PRINT COLUMN l, "==============";
LET l = l + 14
END FOR
PRINT COLUMN l, "============================="
LET imprime = "N"
END REPORT