- Mueve todo el contenido de PROYECTOS/indir y varias funciones compartidas de PROYECTOS/otrodir hacia PROYECTO, siguiendo instruccion de Johnny (PROYECTOS se va a eliminar). - inprmt002: agrega campo Desglose faltante, corrige typo "eLiminar". - inprmt005: agrega formulario y 3 campos faltantes (Consumo, Requiere Autorizacion, Requisiciones), corrige typo "eLiminar". - inprmt013: agrega formulario, titulo, corrige typo "eLiminar". - inprmt046: agrega formulario y varias funciones/dependencias faltantes (cincodmov, clasf_bloque, medidas, defecto, buscaEmp, consultaTransportista, busca_departamento); corrige nombres de campo desalineados con el codigo (depto_a, bodega) y los convierte a ComboBox donde el codigo lo requiere. - Corrige dependencia faltante de FORMULARIOS_IN a la libreria Database (bloqueaba todo el modulo de MATERIA PRIMA).
604 lines
22 KiB
Plaintext
604 lines
22 KiB
Plaintext
{
|
|
-------------------------------------------------------------------------------
|
|
PROGRAMA : INPRRP035
|
|
OBJETIVO : Valorizacion de Inventario Metodo UEPS
|
|
PROGRAMADOR : Tadeo A. Ferreras F.
|
|
FECHA REALIZACION : Septiembre 20/ 1995
|
|
-------------------------------------------------------------------------------
|
|
}
|
|
|
|
GLOBALS "inprgb000.4gl"
|
|
DEFINE t_precio,valor,valor1,valor2,valor3,valor4,cantidad2,cantidad_t,
|
|
cantidad1,total_valor,cant_total,cant_env,cant_env1 DECIMAL(20,4)
|
|
DEFINE base1 DECIMAL(20,4)
|
|
DEFINE fecha1,fecha2,fecha3,fecha4 DATE
|
|
DEFINE s INTEGER
|
|
DEFINE entrada ARRAY[4000] OF RECORD
|
|
fecha DATE,
|
|
cantidad DECIMAL(20,4),
|
|
precio DECIMAL(20,4),
|
|
senal CHAR(14)
|
|
END RECORD
|
|
DEFINE salida ARRAY[4000] OF RECORD
|
|
fecha DATE,
|
|
docu INTEGER,
|
|
cantidad DECIMAL(20,4),
|
|
marca CHAR(1)
|
|
END RECORD
|
|
|
|
####### Definicion de variables a usar en el reporte #######
|
|
# Costo de la materia prima
|
|
|
|
DEFINE reg_rep35 RECORD
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
fecha DATE,
|
|
docu INTEGER,
|
|
cantidad DECIMAL(20,4),
|
|
descrip_esp CHAR(30),
|
|
unidad_med CHAR(3),
|
|
precio DECIMAL(20,4)
|
|
END RECORD
|
|
|
|
# Variables para asignarles los selects
|
|
|
|
DEFINE selec8,selec9,selec4 CHAR(1000)
|
|
|
|
# Bandera para utilizarla en los loops de busqueda
|
|
|
|
DEFINE salir,salir1,salir2 CHAR(1)
|
|
|
|
# Indices de busqueda de las informaciones
|
|
|
|
DEFINE idx_1,idx_2,idx1,i,j,k INTEGER
|
|
FUNCTION inprrp035()
|
|
#WHENEVER ERROR CONTINUE
|
|
|
|
OPTIONS
|
|
FORM LINE 8,
|
|
ERROR LINE 23,
|
|
COMMENT LINE 21
|
|
|
|
OPEN FORM infmrp035 FROM "infmrp034"
|
|
DISPLAY FORM infmrp035
|
|
CALL pantalla()
|
|
DISPLAY "inprrp035" AT 4,3
|
|
DISPLAY "Valorizacion de Inventario Metodo UEPS" AT 6,23
|
|
|
|
LET tipo_papel = 1
|
|
CALL msgrp000(tipo_papel)
|
|
|
|
########### Captura de valores para el criterio de busqueda ############
|
|
|
|
INPUT BY NAME fecha1,fecha2,decide
|
|
|
|
AFTER FIELD fecha1
|
|
IF fecha1 IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha1
|
|
END IF
|
|
|
|
IF fecha1 > TODAY THEN
|
|
LET numero_msg = 189
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha1
|
|
END IF
|
|
|
|
AFTER FIELD fecha2
|
|
IF fecha2 IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha2
|
|
END IF
|
|
|
|
IF fecha1 > TODAY THEN
|
|
LET numero_msg = 189
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha1
|
|
END IF
|
|
IF fecha1 > fecha2 THEN
|
|
LET numero_msg = 51
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha1
|
|
END IF
|
|
|
|
AFTER FIELD decide
|
|
IF decide IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD decide
|
|
END IF
|
|
|
|
END INPUT
|
|
|
|
########### Facilidad para cancelar la variacioncon la tecla DELETE ####
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
|
|
CONSTRUCT criterio ON a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec
|
|
FROM cod_n,cod_grupo,cod_tipo,cod_sec
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
|
|
# Busqueda del inventario inicial de cada materia prima
|
|
|
|
LET total_valor = 0
|
|
LET fecha3 = fecha1
|
|
|
|
LET selec4 =
|
|
"SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.fecha,a.num_doc, ",
|
|
" a.cantidad_2,b.descrip_esp,b.unidad_med ",
|
|
"FROM intb00116 a, intb00001 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.fecha <= ?) AND (a.status_t IS NULL) AND ",
|
|
" b.status_t IS NULL AND ",
|
|
criterio CLIPPED
|
|
|
|
DISPLAY "<<Buscando Informacion... Espere por Favor.>>" AT 17,14
|
|
ATTRIBUTE(REVERSE,BOLD)
|
|
|
|
PREPARE comando4 FROM selec4
|
|
DECLARE stand SCROLL CURSOR FOR comando4
|
|
OPEN stand USING fecha2
|
|
|
|
START REPORT reporte_35 TO "C:\\archivo"
|
|
|
|
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
|
|
AT 17,14 ATTRIBUTE (REVERSE)
|
|
|
|
# Loop inicial de busqueda de las informaciones de la materia prima
|
|
|
|
LET salir = "N"
|
|
WHILE salir != "S"
|
|
FETCH stand INTO reg_rep35.*
|
|
IF STATUS = NOTFOUND THEN
|
|
LET salir = "S"
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
IF int_flag THEN
|
|
LET int_flag = FALSE
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
|
|
IF reg_rep35.cantidad IS NULL THEN
|
|
LET reg_rep35.cantidad = 0
|
|
END IF
|
|
LET reg_rep35.precio = 0
|
|
|
|
IF reg_rep35.cantidad <= 0 AND reg_rep35.fecha <= fecha1 THEN
|
|
LET reg_rep35.cantidad = 0
|
|
END IF
|
|
IF reg_rep35.cantidad <> 0 THEN
|
|
OUTPUT TO REPORT reporte_35(reg_rep35.*)
|
|
END IF
|
|
END WHILE
|
|
FINISH REPORT reporte_35
|
|
CLEAR SCREEN
|
|
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
|
|
|
|
# Rutina de Impresion de las informaciones
|
|
|
|
REPORT reporte_35(x)
|
|
|
|
# Variable para tomar las informaciones
|
|
|
|
DEFINE x RECORD
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
fecha DATE,
|
|
docu INTEGER,
|
|
cantidad DECIMAL(20,4),
|
|
descrip_esp CHAR(30),
|
|
unidad_med CHAR(3),
|
|
precio DECIMAL(20,4)
|
|
END RECORD
|
|
|
|
# Vaiables para la impresion de caracters ASCII
|
|
|
|
DEFINE fech1,fech2 DATE,
|
|
doble_on,doble_off,comp_on,comp_off,doce,normal CHAR(3),
|
|
negrillas_on,negrillas_off CHAR(6),
|
|
hora CHAR(5),cantidad11,cantidad_inicial,
|
|
balance_finalf,cantidad12,cantidad13,balance_final DECIMAL(12,2),
|
|
imp_ini CHAR(1)
|
|
|
|
OUTPUT
|
|
TOP MARGIN 0
|
|
LEFT MARGIN 0
|
|
BOTTOM MARGIN 2
|
|
ORDER BY x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec,x.fecha DESC
|
|
|
|
FORMAT
|
|
|
|
PAGE HEADER
|
|
|
|
# Validacion de los caracteres ascii
|
|
|
|
LET doble_on = ASCII 14
|
|
LET doble_off = ASCII 20
|
|
LET negrillas_on = ASCII 27, ASCII 69
|
|
LET negrillas_off = ASCII 27, ASCII 70
|
|
LET comp_on = ASCII 15
|
|
LET comp_off = ASCII 18
|
|
LET doce = ASCII 27, ASCII 77
|
|
LET normal = ASCII 27, ASCII 80
|
|
LET doce = ASCII 030
|
|
LET hora = time
|
|
|
|
# Impresion de los encabezados
|
|
|
|
LET lj = (117 - LENGTH(p_companias.nombre CLIPPED))/2
|
|
PRINT comp_on,negrillas_on
|
|
PRINT COLUMN 1, "inprrp035",
|
|
COLUMN lj, p_companias.nombre CLIPPED,
|
|
COLUMN 110, "Pag. ",pageno using "###"
|
|
PRINT COLUMN 35, " Sistema de Inventario de Materia Prima",
|
|
COLUMN 110, today using "dd/mm/yyyy"
|
|
PRINT COLUMN 35, " Valorizacion de Inventario Metodo UEPS",
|
|
COLUMN 113, hora
|
|
PRINT COLUMN 1,"Periodo: DEL ",fecha1 USING "dd/mm/yyyy",
|
|
" AL ",fecha2 USING "dd/mm/yyyy";
|
|
IF decide = "D" THEN
|
|
PRINT COLUMN 35, " Detallado "
|
|
ELSE
|
|
PRINT COLUMN 35, " Resumido "
|
|
END IF
|
|
PRINT COLUMN 1, "--------------------------------------------------",
|
|
"--------------------------------------------------",
|
|
"-----------------"
|
|
|
|
IF decide = "D" THEN
|
|
PRINT COLUMN 21, "Entrada",
|
|
COLUMN 31, "Fecha",
|
|
COLUMN 45, "Precio",
|
|
COLUMN 61, "Salida",
|
|
COLUMN 69, "Fecha",
|
|
COLUMN 79, "Docto.",
|
|
COLUMN 96, "Balance",
|
|
COLUMN 113, "Valor"
|
|
ELSE
|
|
PRINT COLUMN 1, "Material",
|
|
COLUMN 96, "Balance",
|
|
COLUMN 113, "Valor"
|
|
END IF
|
|
|
|
PRINT COLUMN 1, "--------------------------------------------------",
|
|
"--------------------------------------------------",
|
|
"-----------------"
|
|
PRINT negrillas_off
|
|
|
|
BEFORE GROUP OF x.cod_sec
|
|
|
|
### Buscando inv. inicial
|
|
LET t_precio = 0
|
|
LET cant_total = 0
|
|
LET imp_ini = "N"
|
|
|
|
SELECT SUM(a.cantidad_2) INTO cant_total FROM intb00116 a
|
|
WHERE (a.cod_n = x.cod_n AND a.cod_grupo = x.cod_grupo AND
|
|
a.cod_tipo = x.cod_tipo AND a.cod_sec = x.cod_sec) AND
|
|
(a.fecha <= fecha1) AND (a.status_t IS NULL)
|
|
|
|
IF cant_total IS NULL THEN
|
|
LET cant_total = 0
|
|
END IF
|
|
|
|
LET base1 = 1
|
|
IF decide = "D" THEN
|
|
PRINT COLUMN 1, negrillas_on
|
|
PRINT COLUMN 1, "MATERIAL: ",x.cod_n USING "&","-",
|
|
x.cod_grupo USING "&","-",x.cod_tipo USING "&&",
|
|
"-",x.cod_sec USING "&&&"," ",x.descrip_esp," ",
|
|
x.unidad_med,
|
|
COLUMN 64, "Inventario Inicial ---> ",cant_total
|
|
USING "###,###,###.##", negrillas_off
|
|
END IF
|
|
LET base1 = 1
|
|
LET t_precio = 0
|
|
LET idx = 0
|
|
LET idx1 = 0
|
|
|
|
ON EVERY ROW
|
|
IF cant_total <= 0 AND x.fecha <= fecha1 THEN
|
|
LET x.cantidad = 0
|
|
END IF
|
|
|
|
IF x.cantidad > 0 THEN
|
|
SELECT MAX(a.fecha) INTO fecha4 FROM cttb00013 a
|
|
WHERE (a.cod_n = x.cod_n AND a.cod_grupo = x.cod_grupo AND
|
|
a.cod_tipo = x.cod_tipo AND a.cod_sec=x.cod_sec) AND
|
|
(a.fecha <= x.fecha) AND (a.costo_lq > 0) AND
|
|
(a.costo_lq IS NOT NULL) AND (a.status_t IS NULL)
|
|
|
|
IF fecha4 IS NULL THEN
|
|
LET fecha4 = x.fecha
|
|
SELECT MIN(a.costo_lq) INTO x.precio FROM cttb00013 a
|
|
WHERE (a.cod_n = x.cod_n AND a.cod_grupo = x.cod_grupo AND
|
|
a.cod_tipo = x.cod_tipo AND a.cod_sec = x.cod_sec) AND
|
|
(a.costo_lq IS NOT NULL) AND (a.costo_lq > 0) AND
|
|
(a.status_t IS NULL)
|
|
ELSE
|
|
SELECT MIN(a.costo_lq) INTO x.precio FROM cttb00013 a
|
|
WHERE (a.cod_n = x.cod_n AND a.cod_grupo = x.cod_grupo AND
|
|
a.cod_tipo = x.cod_tipo AND a.cod_sec = x.cod_sec) AND
|
|
(a.costo_lq IS NOT NULL) AND (a.costo_lq > 0) AND
|
|
(a.fecha = fecha4) AND (a.status_t IS NULL)
|
|
END IF
|
|
|
|
IF x.precio IS NULL THEN
|
|
LET x.precio = 0
|
|
END IF
|
|
IF x.precio = 0 THEN
|
|
LET x.precio = t_precio
|
|
ELSE
|
|
LET t_precio = x.precio
|
|
END IF
|
|
LET idx = idx + 1
|
|
IF x.fecha > fecha1 THEN
|
|
LET entrada[idx].senal = " "
|
|
LET entrada[idx].fecha = x.fecha
|
|
LET entrada[idx].cantidad = x.cantidad
|
|
LET entrada[idx].precio = x.precio
|
|
ELSE
|
|
IF cant_total > 0 THEN
|
|
IF (cant_total - x.cantidad) > 0 THEN
|
|
LET entrada[idx].senal = "*Inv. Inicial*"
|
|
LET entrada[idx].fecha = x.fecha
|
|
LET entrada[idx].cantidad = x.cantidad
|
|
LET entrada[idx].precio = x.precio
|
|
LET cant_total = cant_total - x.cantidad
|
|
ELSE
|
|
LET entrada[idx].senal = "*Inv. Inicial*"
|
|
LET entrada[idx].fecha = x.fecha
|
|
LET entrada[idx].cantidad = cant_total
|
|
LET entrada[idx].precio = x.precio
|
|
LET cant_total = 0
|
|
END IF
|
|
END IF
|
|
END IF
|
|
END IF
|
|
|
|
### Buscando las salidas del rango de fecha
|
|
|
|
IF x.cantidad < 0 AND x.fecha > fecha1 THEN
|
|
LET idx1 = idx1 + 1
|
|
LET salida[idx1].fecha = x.fecha
|
|
LET salida[idx1].docu = x.docu
|
|
LET salida[idx1].cantidad = x.cantidad * -1
|
|
LET salida[idx1].marca = "a"
|
|
END IF
|
|
|
|
AFTER GROUP OF x.cod_sec
|
|
LET t_precio = 0
|
|
LET balance = 0
|
|
LET fecha4 = fecha2
|
|
LET valor = 0
|
|
LET s = 0
|
|
|
|
FOR j = 1 TO idx
|
|
|
|
IF entrada[j].cantidad > 0 THEN
|
|
IF entrada[j].precio = 0 THEN
|
|
LET entrada[j].precio = t_precio
|
|
ELSE
|
|
LET t_precio = entrada[j].precio
|
|
END IF
|
|
LET balance = balance + entrada[j].cantidad
|
|
LET valor = valor + (entrada[j].cantidad * entrada[j].precio)
|
|
IF valor IS NULL THEN
|
|
LET valor = 0
|
|
END IF
|
|
LET valor1= 0
|
|
|
|
IF decide = "D" THEN
|
|
PRINT COLUMN 1, entrada[j].senal,
|
|
COLUMN 16, entrada[j].cantidad USING "###,###,###.##",
|
|
COLUMN 31, entrada[j].fecha USING "dd/mm/yyyy",
|
|
COLUMN 41, entrada[j].precio USING "#,###,###.####";
|
|
END IF
|
|
|
|
FOR k = 1 TO idx1
|
|
IF salida[k].marca = "a" THEN
|
|
|
|
IF salida[k].cantidad IS NULL THEN
|
|
LET salida[k].cantidad = 0
|
|
END IF
|
|
IF cantidad2 IS NULL THEN
|
|
LET cantidad2 = 0
|
|
END IF
|
|
IF balance IS NULL THEN
|
|
LET balance = 0
|
|
END IF
|
|
|
|
IF (balance - salida[k].cantidad) < 0 THEN
|
|
LET cantidad2 = balance
|
|
LET salida[k].cantidad = salida[k].cantidad-cantidad2
|
|
ELSE
|
|
LET cantidad2 = salida[k].cantidad
|
|
LET salida[k].marca = "b"
|
|
END IF
|
|
LET valor2 = 0
|
|
LET fecha4 = salida[k].fecha
|
|
|
|
### Calculando la valorizacion del inventario
|
|
|
|
LET balance = balance - cantidad2
|
|
LET valor = valor - (cantidad2 * entrada[j].precio)
|
|
IF valor IS NULL THEN
|
|
LET valor = 0
|
|
END IF
|
|
IF balance = 0 THEN
|
|
LET valor = 0
|
|
END IF
|
|
LET valor1 = 11
|
|
IF decide = "D" THEN
|
|
PRINT COLUMN 56, cantidad2 USING "###,###,###.##",
|
|
COLUMN 71, salida[k].fecha USING "dd/mm/yyyy",
|
|
COLUMN 80, salida[k].docu USING "&&&&&&&&",
|
|
COLUMN 89, balance USING "###,###,###.##",
|
|
COLUMN 104, valor USING "###,###,###.##"
|
|
END IF
|
|
IF balance <= 0 THEN
|
|
EXIT FOR
|
|
END IF
|
|
|
|
END IF
|
|
END FOR
|
|
## En caso de que no exista salida, sumariza las entradas
|
|
|
|
IF decide = "D" THEN
|
|
IF valor1 = 0 THEN
|
|
PRINT COLUMN 89, balance USING "###,###,###.##",
|
|
COLUMN 104, valor USING "###,###,###.##"
|
|
END IF
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
IF decide = "R" THEN
|
|
LET cantidad1 = 0
|
|
LET valor1 = 0
|
|
LET j = idx
|
|
LET idx = 0
|
|
FOR k = 1 TO j
|
|
|
|
IF entrada[j-idx].cantidad IS NULL THEN
|
|
LET entrada[j-idx].cantidad = 0
|
|
END IF
|
|
IF entrada[j-idx].cantidad > 0 THEN
|
|
|
|
IF cantidad1 < balance THEN
|
|
IF (j-idx) = j THEN
|
|
PRINT COLUMN 1,negrillas_on
|
|
PRINT COLUMN 1,"MATERIAL: ",x.cod_n USING "&","-",
|
|
x.cod_grupo USING "&","-",
|
|
x.cod_tipo USING "&&","-",
|
|
x.cod_sec USING "&&&"," ",
|
|
x.descrip_esp," ",x.unidad_med,
|
|
negrillas_off
|
|
END IF
|
|
|
|
IF (cantidad1+entrada[j-idx].cantidad) > balance THEN
|
|
LET entrada[j-idx].cantidad = balance - cantidad1
|
|
END IF
|
|
LET cantidad1 = cantidad1 + entrada[j-idx].cantidad
|
|
LET valor1 = valor1 + (entrada[j-idx].cantidad *
|
|
entrada[j-idx].precio)
|
|
|
|
IF entrada[j-idx].senal = "*Inv. Inicial*" THEN
|
|
IF imp_ini = "N" THEN
|
|
|
|
SELECT SUM(a.cantidad_2)
|
|
INTO balance_final FROM intb00116 a
|
|
WHERE (a.cod_n = x.cod_n AND
|
|
a.cod_grupo = x.cod_grupo AND
|
|
a.cod_tipo = x.cod_tipo AND
|
|
a.cod_sec = x.cod_sec) AND
|
|
(a.fecha <= fecha2) AND
|
|
(a.status_t IS NULL)
|
|
|
|
IF balance_final IS NULL THEN
|
|
LET balance_final = 0
|
|
END IF
|
|
DECLARE busca4 CURSOR FOR
|
|
SELECT a.balance,a.costo,a.fecha FROM intb00010 a
|
|
WHERE a.cod_n = x.cod_n AND
|
|
a.cod_grupo = x.cod_grupo AND
|
|
a.cod_tipo = x.cod_tipo AND
|
|
a.cod_sec = x.cod_sec AND
|
|
a.fecha_ini = fecha1
|
|
ORDER BY 3
|
|
LET cantidad11 = 0
|
|
LET valor1 = 0
|
|
LET balance_finalf = 0
|
|
LET cantidad12 = 0
|
|
FOREACH busca4 INTO x.cantidad,x.precio,x.fecha
|
|
LET cantidad11 = balance_final - x.cantidad
|
|
IF cantidad11 >= 0 THEN
|
|
LET imp_ini = "S"
|
|
LET valor1 =
|
|
(x.cantidad * x.precio) + valor1
|
|
LET cantidad12 = cantidad12 + x.cantidad
|
|
PRINT COLUMN 1, entrada[j-idx].senal,
|
|
COLUMN 16, x.cantidad
|
|
USING "###,###,###.##",
|
|
COLUMN 31, x.fecha USING "dd/mm/yyyy",
|
|
COLUMN 41, x.precio
|
|
USING "#,###,###.####",
|
|
COLUMN 89, cantidad12
|
|
USING "###,###,###.##",
|
|
COLUMN 104, valor1
|
|
USING "###,###,###.##"
|
|
LET balance_final = cantidad11
|
|
ELSE
|
|
LET imp_ini = "S"
|
|
LET cantidad12 = cantidad12 + balance_final
|
|
LET valor1 =
|
|
(balance_final* x.precio) + valor1
|
|
PRINT COLUMN 1, entrada[j-idx].senal,
|
|
COLUMN 16, balance_final
|
|
USING "###,###,###.##",
|
|
COLUMN 31, x.fecha USING "dd/mm/yyyy",
|
|
COLUMN 41, x.precio
|
|
USING "#,###,###.####",
|
|
COLUMN 89, cantidad12
|
|
USING "###,###,###.##",
|
|
COLUMN 104, valor1
|
|
USING "###,###,###.##"
|
|
|
|
EXIT FOREACH
|
|
END IF
|
|
END FOREACH
|
|
LET valor = valor1
|
|
END IF
|
|
END IF
|
|
IF entrada[j-idx].senal != "*Inv. Inicial*" THEN
|
|
PRINT COLUMN 1, entrada[j-idx].senal,
|
|
COLUMN 16, entrada[j-idx].cantidad
|
|
USING "###,###,###.##",
|
|
COLUMN 31, entrada[j-idx].fecha USING "dd/mm/yyyy",
|
|
COLUMN 41, entrada[j-idx].precio
|
|
USING "#,###,###.####",
|
|
COLUMN 89, cantidad1 USING "###,###,###.##",
|
|
COLUMN 104, valor1 USING "###,###,###.##"
|
|
LET valor = valor1
|
|
END IF
|
|
LET idx = idx + 1
|
|
IF cantidad1 = balance THEN
|
|
EXIT FOR
|
|
END IF
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
END IF
|
|
IF total_valor IS NULL THEN
|
|
LET total_valor = 0
|
|
END IF
|
|
LET total_valor = total_valor + valor
|
|
|
|
ON LAST ROW
|
|
PRINT COLUMN 102, "--------------"
|
|
PRINT COLUMN 80, "Total General --->",
|
|
COLUMN 104, total_valor USING "###,###,###.##"
|
|
PRINT comp_off
|
|
|
|
END REPORT
|