913 lines
28 KiB
Plaintext
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
|