Files
MBS/PROYECTO/lqdir/lqprrp004_1.4gl
T

953 lines
34 KiB
Plaintext

{
==============================================================================
PROGRAMA : LQPRRP004
SISTEMA : Sistema de Liquidacion Materiales
Objetivo : Liquidacion Mercancia Compras Exterior Prod. Terminados
PROGRAMADOR : Juan F. Soto
FECHA : Mayo 13, 1994
MODIFICADO :
FECHA :
==============================================================================
}
GLOBALS
"lqprgb000.4gl"
###### Variables para busqueda de rango de fecha
DEFINE elije,imp,afecta CHAR(1)
DEFINE p_ano,m_mes SMALLINT
DEFINE fecha1, fecha2 DATE ,
p_fecha CHAR(10)
DEFINE entra CHAR(14)
DEFINE t_costst
DECIMAL(12,2)
DEFINE detalla CHAR(30)
DEFINE orden CHAR(10)
DEFINE t_variacion DECIMAL(12,2)
###### Variables que la almacenan la informacion enviada al reporte
DEFINE diario1 RECORD
cuenta_no LIKE cgtb00001.cuenta_no,
debito DECIMAL(18,2)
END RECORD
DEFINE i SMALLINT
DEFINE fecha_inicial,fecha_final DATE
DEFINE primera,imp_entrada CHAR(1)
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
CONNECT to "smarmotech" USER usuarios USING clave
SELECT a.* INTO p_companias.* FROM companias a
CALL lqprrp004()
END MAIN
FUNCTION lqprrp004()
DEFINE busca_datos RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descripcion CHAR(30),
unidad CHAR(3),
cod_sp SMALLINT,
cod_sp_sec SMALLINT,
proveedor CHAR(7),
num_doc INTEGER,
num_oc INTEGER,
tipo CHAR(2),
cantidad DECIMAL(12,2),
precio DECIMAL(12,2),
flete DECIMAL(12,2),
imp_colect DECIMAL(12,2),
imp_aduana DECIMAL(12,2),
tasa DECIMAL(8,2),
cost_std LIKE intb00013.costo_st
END RECORD
LET int_flag = FALSE
OPTIONS
FORM LINE 8
OPEN FORM lqfmrp004 FROM "lqfmrp004"
DISPLAY FORM lqfmrp004
DISPLAY "lqprrp004" AT 4,3
DISPLAY "Liquidacion Mercancia pt" AT 6,28
LET tipo_papel = 2
CALL msgrp000(tipo_papel)
CONSTRUCT criterio ON c.num_oc,c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec
FROM num_oc,cod_n,cod_grupo,cod_tipo,cod_sec
AFTER CONSTRUCT
IF INT_FLAG THEN
CALL msg(2)
LET INT_FLAG = FALSE
EXIT PROGRAM
END IF
EXIT CONSTRUCT
END CONSTRUCT
INPUT BY NAME p_ano,m_mes,elije,imp_entrada,imp
AFTER FIELD m_mes
SELECT fecha_inicio,fecha_corte INTO fecha_inicial,fecha_final
FROM prdtable where mes = m_mes AND ano = p_ano
DISPLAY BY NAME fecha_inicial,fecha_final
LET p_fechas = fecha_final using "ddmmyyyy"
CALL prd(p_fechas,usuarios) RETURNING bandera
IF bandera = 1 THEN
LET bandera = 0
# NEXT FIELD p_ano
END IF
AFTER INPUT
EXIT INPUT
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET chstd = FGL_WINQUESTION("PREGUNTA","Actualiza Costos STD?","yes","Yes|no","question",0)
LET chstd = UPSHIFT(chstd)
LET respuesta = FGL_WINQUESTION("IMPRESION","DESEA REPORTE EN PANTALLA?","NO","NO|YES","QUESTION",0)
LET primera = "S"
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia
IF respuesta = "YES" THEN
START REPORT liquida1 TO SCREEN
ELSE
START REPORT liquida1 TO archivo
END IF
DISPLAY "<<<Reporte Generandose... Espere por Favor>>>" AT 19,14
ATTRIBUTE(YELLOW)
LET selec =
"SELECT UNIQUE a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp, ",
" a.unidad_med,b.cod_sp,b.cod_sp_sec,b.nom_sp,c.rep_entrada,c.num_oc, ",
" c.tipo,c.cantidad_oc,c.cantidad_oc*c.fob,c.costo_flete,c.impuesto,c.otros_g,d.prima_us ",
"FROM iptb00002 a,cotb00001 b,cgtb00018 c,cgtb00017 d ",
"WHERE (a.cod_n = c.cod_n and a.cod_grupo = c.cod_grupo and ",
" a.cod_tipo = c.cod_tipo and a.cod_sec = c.cod_sec) AND ",
" (d.fecha between '", fecha_inicial USING "MM/dd/YYYY","' and '",
fecha_final USING "MM/dd/YYYY","') and ",
" (c.num_oc = d.num_oc) and (c.tipo=d.tipo) and (d.cod_sp=b.cod_sp AND ",
" d.cod_sp_sec = b.cod_sp_sec) and (c.rep_entrada = d.rep_entrada) and ",
" (c.status_t is null) and d.liquidada='",elije,"' and c.tipo = '02' ",
"AND (a.status_t IS NULL) AND (d.status_t IS NULL) and ",
criterio CLIPPED,
" ORDER BY c.num_oc,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec "
PREPARE comando FROM selec
DECLARE busca CURSOR FOR comando
INSERT INTO cttb000log1 VALUES (GETDATE(),usuarios,'lqprrp004','GENERO')
FOREACH busca INTO busca_datos.*
LET orden = busca_datos.num_oc USING "<<<<<<"
{
#Busca la entrada 64 del rango especificado
SELECT sum(debito-credito) INTO valor_64 FROM cgtb00004
WHERE (fecha between fecha_inicial and fecha_final and
ref[1,5] = "ED.64") AND (cod_aux = cod_aux and cod_sec = cod_sec
and num_doc = orden and status_t is null)
IF valor_64 is null THEN
LET valor_64 = 0
END IF
# Busca el monto pagado al colector
SELECT sum(a.debito-a.credito) INTO busca_datos.imp_colect FROM cgtb00004 a
WHERE (a.cuenta_no = "1161-01" and a.status_t is null and
a.fecha <= fecha_final and a.cod_sec = a.cod_sec and
a.num_doc = orden)
}
IF busca_datos.imp_colect is null THEN
LET busca_datos.imp_colect = 0
END IF
IF busca_datos.imp_colect < 0 THEN
LET busca_datos.imp_colect = busca_datos.imp_colect * -1
END IF
{
# Busca los gastos aduanales
SELECT sum(debito-credito) INTO busca_datos.imp_aduana FROM cgtb00004
WHERE (cuenta_no = "1161" and status_t is null and
fecha <= fecha_final and cod_sec = cod_sec and
num_doc = orden)
}
IF busca_datos.imp_aduana is null THEN
LET busca_datos.imp_aduana = 0
END IF
IF busca_datos.imp_aduana < 0 THEN
LET busca_datos.imp_aduana = busca_datos.imp_aduana * -1
END IF
# Busca el costos standard
LET busca_datos.cost_std = 0
SELECT AVG(a.material+a.labor+a.gastos) INTO busca_datos.cost_std
FROM iptb00004 a
WHERE a.ventas = "1" and
a.ano = year(fecha_inicial) and a.cod_n = busca_datos.cod_n and
a.cod_grupo = busca_datos.cod_grupo and
a.cod_tipo = busca_datos.cod_tipo and
a.cod_sec = busca_datos.cod_sec and a.status_t is null
IF STATUS = NOTFOUND THEN
LET busca_datos.cost_std = 0
END IF
IF busca_datos.cost_std is null THEN
LET busca_datos.cost_std = 0
END IF
IF chstd = "yes" THEN
DELETE FROM cttb00013 WHERE (fecha_lq = fecha_final AND
tipo_lq = elije AND
tipo_orden = 2 AND
num_oc = busca_datos.num_oc)
END IF
OUTPUT TO REPORT liquida1(busca_datos.*)
END FOREACH
FINISH REPORT liquida1
IF respuesta <> "YES" THEN
IF imp = "S" THEN
RUN imprime
END IF
END IF
IF imp_entrada = "S" THEN
CALL edprrp0271()
END IF
CLEAR SCREEN
END FUNCTION
REPORT liquida1(x)
DEFINE x RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descripcion CHAR(30),
unidad CHAR(3),
cod_sp SMALLINT,
cod_sp_sec SMALLINT,
proveedor CHAR(7),
num_doc INTEGER,
num_oc INTEGER,
tipo CHAR(2),
cantidad DECIMAL(12,2),
precio DECIMAL(12,2),
flete DECIMAL(12,2),
imp_colect DECIMAL(12,2),
imp_aduana DECIMAL(12,2),
tasa DECIMAL(8,2),
cost_std LIKE intb00013.costo_st
END RECORD
DEFINE valor DECIMAL(12,2)
DEFINE fecha1,fecha2 DATE
DEFINE variacion,precio_std,fob,c_f,seguro,cost_pl,
t_fob,t_flete,t_seguro,t_cf,t_impcol,t_impaduana,t_dollar,
t_costopl,t_recibida,t_precio,o_variacion
DECIMAL(12,2)
DEFINE no_reg SMALLINT
DEFINE total_cf,t_costo, costo_unit DECIMAL(12,4),
o_impaduana,o_impcolect,o_dollar,o_cf
DECIMAL(12,2)
DEFINE balan_act, ot_fob,
ot_flete,
ot_cf,
ot_seguro,
ot_impcol,
ot_impaduana,
ot_dollar,
ot_costopl,
ot_costo,
ot_precio,
ot_costst,
ot_variacion DECIMAL(12,2)
DEFINE descrip1 CHAR(30)
DEFINE p_cuenta CHAR(8)
DEFINE otras_cta CHAR(8),
producto VARCHAR(60)
## DEFINICION DE LAS VARIABLES DE IMPRESION
DEFINE doble_on CHAR(2)
DEFINE negrillas_on CHAR(2)
DEFINE negrillas_off CHAR(2)
DEFINE comp_on CHAR(2)
DEFINE comp_off CHAR(2)
DEFINE doce CHAR(2)
DEFINE normal CHAR(2)
DEFINE hora CHAR(5)
OUTPUT
## DEFINICION DE LOS MARGENES DE IMPRESION
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 3
FORMAT
PAGE HEADER
LET doble_on = ASCII 14
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 hora = time
## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS
LET l = (80 - LENGTH(p_compania.nombre CLIPPED)) / 2
PRINT COLUMN 1, comp_on,
COLUMN 2, "lqprrp004",
COLUMN 14, negrillas_on,
COLUMN 15, doble_on,
COLUMN l, p_compania.nombre CLIPPED,
negrillas_off,
COLUMN 140, "Pag. ",pageno using "###"
LET l = (80 - LENGTH("Sistema de Contabilidad de Costo")) / 2
PRINT COLUMN l, "Sistema de Contabilidad de Costo",
COLUMN 210, today using "dd/mm/yy"
LET l = (80 - LENGTH("Liquidacion Mercancia")) / 2
PRINT COLUMN l, "Liquidacion Mercancia",
COLUMN 210, hora
PRINT COLUMN 98, "Del ",fecha_inicial USING "dd/mm/yy"," Al ",
fecha_final USING "dd/mm/yy"
PRINT negrillas_on
PRINT COLUMN 1, "---------------------------------------------------",
"---------------------------------------------------",
"-------------------------------",
"-------------------------------",
"-------------------------------",
"------------------------------------"
PRINT COLUMN 128,"GASTO"
PRINT COLUMN 61, "Ordenes",
COLUMN 96, "COSTO &",
COLUMN 115, "IMPUESTO",
COLUMN 128, "ADUANAL",
COLUMN 141, "PRIMA ",
COLUMN 153, "COSTO EN",
COLUMN 166, "UNIDADES",
COLUMN 186, "COSTO",
COLUMN 197, "PRECIO",
COLUMN 209, "COSTO"
PRINT COLUMN 1, "Materiales",
COLUMN 50, "Proveedor",
COLUMN 61, "Compras",
COLUMN 76, "FOB",
COLUMN 83, "FLETE",
COLUMN 96, "FLETE",
COLUMN 104, "SEGURO",
COLUMN 115, "COLECTOR",
COLUMN 128, "Y OTROS",
COLUMN 141, "DOLLAR",
COLUMN 153, "PLANTA",
COLUMN 166, "RECIBIDA",
COLUMN 189, "UNIT.",
COLUMN 201, "STD",
COLUMN 212, "STD",
COLUMN 224, "VARIACION"
PRINT COLUMN 1, "----------------------------------------------------",
"----------------------------------------------------" ,
"-----------------------------",
"-------------------------------",
"-------------------------------",
"------------------------------------"
IF primera = "S" THEN
LET t_fob = 0
LET t_flete = 0
LET t_seguro = 0
LET t_cf = 0
LET t_impcol = 0
LET t_impaduana = 0
LET t_dollar = 0
LET t_costopl = 0
LET t_recibida = 0
LET t_costo = 0
LET t_precio = 0
LET t_costst = 0
LET t_variacion = 0
LET o_variacion = 0
LET idx = 1
LET primera = "N"
END IF
BEFORE GROUP OF x.num_oc
{
# Busca La suma del costo y flete
SELECT SUM(a.fob+a.costo_flete),count(*) INTO total_cf,no_reg
FROM cgtb00018 a,cgtb00017 b
WHERE a.num_oc = x.num_oc and a.tipo = x.tipo and
b.fecha between fecha_inicial and fecha_final and
a.num_oc = b.num_oc and a.tipo = b.tipo and
a.status_t is null and a.rep_entrada = b.rep_entrada
}
IF total_cf is null THEN
LET total_cf = 0
END IF
LET ot_fob =0
LET ot_flete =0
LET ot_cf =0
LET ot_seguro =0
LET ot_impcol =0
LET ot_impaduana =0
LET ot_dollar =0
LET ot_costopl =0
LET ot_costo =0
LET ot_precio =0
LET ot_costst =0
LET ot_variacion =0
PRINT negrillas_off
ON EVERY ROW
LET seguro = 0
SELECT CONVERT(CHAR(10),MIN(a.fecha),101) INTO p_fecha FROM iptb00006 a
WHERE a.num_doc = x.num_doc and cod_mov in (10) AND status_t IS NULL
LET fob = x.precio
LET c_f = fob + x.flete
#jhonny 10/4/99 LET seguro = (c_f * .10)
LET valor = c_f * x.tasa
IF elije = "L" THEN
LET seguro = 0
END IF
IF no_reg > 1 THEN
#print "impaduana ",x.imp_aduana using "##,###.##"," totalcf ",total_cf using "##,###.##" ," "," costo y Flete ",c_f using "##,###.##"
LET x.imp_aduana = (x.imp_aduana / total_cf) * c_f
LET x.imp_colect = (x.imp_colect / total_cf) * c_f
END IF
LET cost_pl = seguro + c_f + x.imp_colect + x.imp_aduana + valor
LET costo_unit = cost_pl / x.cantidad
LET precio_std = x.cantidad * x.cost_std
LET variacion = cost_pl - precio_std
LET producto =x.cod_n using "&&&&","-",x.cod_grupo using "&&&&","-",
x.cod_tipo using "&&&&","-",x.cod_sec using "&&&&&&",
' ',x.descripcion CLIPPED
PRINT COLUMN 1, producto[1,45],
#COLUMN 34,x.unidad,
2 SPACES, x.cod_sp using "&&","-",x.cod_sp_sec using "&&&&",
COLUMN 47,x.proveedor,
COLUMN 60, x.num_oc using "&&&&&","-",x.tipo,
COLUMN 69,fob using "##,###.##",
2 SPACES,x.flete using "##,###.##",
2 SPACES, c_f using "##,###.##",
2 SPACES, seguro using "##,###.##",
2 SPACES, x.imp_colect using "##,###,###.##",
2 SPACES, x.imp_aduana using "##,###,###.##",
2 SPACES, valor using "##,###,###.##",
2 SPACES, cost_pl using "##,###,###.##",
2 SPACES, x.cantidad using "##,###,###.##",
2 SPACES, costo_unit using "##,###,###.##",
2 SPACES, x.cost_std using "##,###,###.####",
2 SPACES, precio_std using "##,###,###.##",
2 SPACES, variacion using "--,--,---,---.##"
IF chstd = "YES" THEN
SELECT UNIQUE a.cod_n FROM iptb00004 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.ano = p_ano and
a.mes_ini = '01' AND
a.mes_fin = '12'
IF STATUS = NOTFOUND THEN
INSERT INTO iptb00004 (ventas,mes_ini,mes_fin,ano,cod_n,cod_grupo,cod_tipo,cod_sec,material,labor,gastos,us_crea,fech_crea)
VALUES ('1','01','12',p_ano,x.cod_n,x.cod_grupo,x.cod_tipo,
x.cod_sec,costo_unit,'0','0',SUSER_SNAME(),GETDATE())
{ELSE
UPDATE iptb00004 SET material = costo_unit,
us_mod = suser_sname(),
fech_mod = getdate()
WHERE iptb00004.cod_n = x.cod_n AND
iptb00004.cod_grupo = x.cod_grupo AND
iptb00004.cod_tipo = x.cod_tipo AND
iptb00004.cod_sec = x.cod_sec AND
iptb00004.mes_ini = "01" AND iptb00004.mes_fin = "12" AND
iptb00004.ano = p_ano }
END IF
END IF
INSERT INTO cttb00013 (fecha_lq,fecha,tipo_lq,num_oc,cod_n,cod_grupo,cod_tipo,cod_sec,cantidad,costo_lq,status_t,us_crea,fech_crea,tipo_orden)
VALUES (fecha_final,p_fecha,elije,x.num_oc,x.cod_n,x.cod_grupo,x.cod_tipo,
x.cod_sec,x.cantidad,costo_unit,null,SUSER_SNAME(),GETDATE(),x.tipo)
INSERT INTO cttb000log2
(fecha_lq,fecha,tipo_lq,num_oc,cod_n,cod_grupo,cod_tipo,cod_sec,cantidad,costo_lq,status_t,us_crea,fech_crea,tipo_orden,programa)
VALUES (fecha_final,p_fecha,elije,x.num_oc,x.cod_n,x.cod_grupo,x.cod_tipo,
x.cod_sec,x.cantidad,costo_unit,null,SUSER_SNAME(),GETDATE(),x.tipo,'lqprrp004')
# Acumulacion de totales
IF o_impaduana is null THEN
LET o_impaduana = 0
END IF
IF o_variacion is null THEN
LET o_variacion = 0
END IF
IF o_impcolect is null THEN
LET o_impcolect = 0
END IF
IF o_dollar is null THEN
LET o_dollar = 0
END IF
IF o_cf is null THEN
LET o_cf = 0
END IF
LET t_fob = t_fob + fob
LET t_flete = t_flete + x.flete
LET t_seguro = t_seguro + seguro
LET t_cf = t_cf + c_f
LET t_impcol = t_impcol + x.imp_colect
LET t_impaduana = t_impaduana + x.imp_aduana
LET t_dollar = t_dollar + valor
LET t_costopl = t_costopl + cost_pl
LET t_costo = t_costo + costo_unit
LET t_precio = t_precio + x.cost_std
LET t_costst = t_costst + precio_std
LET t_variacion = t_variacion + variacion
LET o_variacion = o_variacion + cost_pl
LET o_impaduana = o_impaduana + x.imp_aduana + seguro
LET o_impcolect = o_impcolect + x.imp_colect
LET o_dollar = o_dollar + valor
LET o_cf = o_cf + c_f
LET ot_fob = ot_fob + fob
LET ot_flete = ot_flete + x.flete
LET ot_cf = ot_cf + c_f
LET ot_seguro = ot_seguro + seguro
LET ot_impcol = ot_impcol + x.imp_colect
LET ot_impaduana = ot_impaduana + x.imp_aduana
LET ot_dollar = ot_dollar + valor
LET ot_costopl = ot_costopl + cost_pl
LET ot_costo = ot_costo + costo_unit
LET ot_precio = ot_precio + x.cost_std
LET ot_costst = ot_costst + precio_std
LET ot_variacion = ot_variacion + variacion
AFTER GROUP OF x.num_oc
# Validacion del arreglo para imprimir la entrada 27
IF imp_entrada = "S" THEN
LET entrada27[idx].cuenta_no = "1161"
LET entrada27[idx].cod_aux = x.cod_sp
LET entrada27[idx].cod_sec = x.cod_sp_sec
LET entrada27[idx].num_doc = x.num_oc
LET entrada27[idx].valor = o_impaduana
LET o_impaduana = 0
LET idx = idx + 1
LET entrada27[idx].cuenta_no = "1161-01"
LET entrada27[idx].cod_aux = x.cod_sp
LET entrada27[idx].cod_sec = x.cod_sp_sec
LET entrada27[idx].num_doc = x.num_oc
LET entrada27[idx].valor = o_impcolect
LET o_impcolect = 0
LET idx = idx + 1
LET entrada27[idx].cuenta_no = "1161-02"
LET entrada27[idx].cod_aux = x.cod_sp
LET entrada27[idx].cod_sec = x.cod_sp_sec
LET entrada27[idx].num_doc = x.num_oc
LET entrada27[idx].valor = o_dollar
LET o_dollar = 0
LET idx = idx + 1
LET entrada27[idx].cuenta_no = "1161-03"
LET entrada27[idx].cod_aux = x.cod_sp
LET entrada27[idx].cod_sec = x.cod_sp_sec
LET entrada27[idx].num_doc = x.num_oc
LET entrada27[idx].valor = o_cf
LET o_cf = 0
LET idx = idx + 1
END IF
#-------------------------------------------------------------------------
PRINT COLUMN 1, "------------------------------------------------------",
"------------------------------------------------------",
"------------------------------------------------------",
"------------------------------------------------------",
"----------"
PRINT COLUMN 1, "Totales orden-> ",
COLUMN 69, ot_fob using "###,###.##",
1 SPACES, ot_flete using "##,###.##",
2 SPACES, ot_cf using "###,###.##",
2 SPACES, ot_seguro using "##,###.##",
5 SPACES, ot_impcol using "###,###.##",
3 SPACES, ot_impaduana using "#,###,###.##",
3 SPACES, ot_dollar using "#,###,###.##",
3 SPACES, ot_costopl using "#,###,###.##",
2 SPACES, ot_costo using "#,###,###.##",
5 SPACES, ot_precio using "#,###,###.##",
10 SPACES, ot_costst using "#,###,###.##",
5 SPACES, ot_variacion using "--,---,---.##"
ON LAST ROW
PRINT COLUMN 1,"------------------------------------------------------",
"------------------------------------------------------",
"------------------------------------------------------",
"------------------------------------------------------",
"----------"
PRINT COLUMN 1, "Totales ----> ",
COLUMN 67,t_fob using "#,###,###.##",
1 SPACES, t_flete using "###,###.##",
1 SPACES, t_cf using "#,###,###.##",
3 SPACES, t_seguro using "###.##",
2 SPACES, t_impcol using "#,###,###.##",
2 SPACES, t_impaduana using "##,###,###.##",
2 SPACES, t_dollar using "###,###,###.##",
2 SPACES, t_costopl using "###,###,###.##",
2 SPACES, t_costo using "##,###,###.##",
2 SPACES, t_precio using "###,###,###.##",
10 SPACES, t_costst using "###,###,###.##",
4 SPACES, t_variacion using "---,---,---.##"
LET o_impaduana = 0
LET o_impcolect = 0
LET o_dollar = 0
LET o_cf = 0
END REPORT
{
-------------------------------------------------------------------------------
PROGRAMA : EDPRRP027
OBJETIVO : Listar las Entrada de Diario Mat. Prima Recibida
PROGRAMADOR : Juan F. Soto
FECHA REALIZACION : Mayo 20, 1994.
-------------------------------------------------------------------------------
}
FUNCTION edprrp0271()
# WHENEVER ERROR CONTINUE
DEFINE longitud SMALLINT
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
##### Abriendo y desplegando el formulario de captura de datos
OPEN FORM edfmrp027 FROM "edfmrp027"
DISPLAY FORM edfmrp027
DISPLAY "edprrp027" AT 4,3
DISPLAY "Entrada de Diario Mat. Importada Rec." AT 6,21
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
###### Aceptando los valores para el rango de fecha
INPUT BY NAME entra,fecha1,fecha2,afecta,detalla
AFTER FIELD entra
LET longitud = LENGTH(entra)
IF longitud != 14 THEN
LET numero_msg = 77
CALL msg(numero_msg)
NEXT FIELD entra
END IF
LET existe = "N"
SELECT unique a.ref FROM cgtb00004 a WHERE a.ref = entra
IF STATUS != NOTFOUND THEN
LET existe = "S"
END IF
AFTER FIELD fecha1
IF fecha1 IS NULL THEN
ERROR "(16) CAMPO EN BLANCO"
NEXT FIELD fecha1
END IF
AFTER FIELD fecha2
IF fecha2 is null THEN
ERROR "(16) CAMPO EN BLANCO"
NEXT FIELD fecha2
END IF
IF fecha1 > fecha2 THEN
ERROR "(149) FECHA NO PUEDE SER MAYOR QUE LA ANTERIOR"
NEXT FIELD fecha1
END IF
###### Selecionando en rango de fecha de la tabla de periodo para el fecha2
AFTER INPUT
IF int_flag THEN
ERROR "(2) OPERACION CANCELADA"
LET int_flag = false
RETURN
END IF
END INPUT
##### Creando la facilidad para cancelar proceso con DELETE O SUPR
LET idx = idx - 1
##### Envia la Informacion al printer de contabilidad
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia
START REPORT entrada271 TO archivo
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
##### Loop para enviar informacion al reporte
LET diario1.debito = t_costst
LET diario1.cuenta_no = "1131-02"
OUTPUT TO REPORT entrada271(diario1.*,fecha1,fecha2,detalla,entra)
FINISH REPORT entrada271
RUN imprime
END FUNCTION
#### Funcion para dar salida ordenada a la informacion requerida de
#### una entrada de diario de nominas local
REPORT entrada271(x,fecha1,fecha2,detalle1,entrada)
DEFINE x RECORD
cuenta_no LIKE cgtb00001.cuenta_no,
debito DECIMAL(10,2)
END RECORD
### Acumula los valores de las diferentes cuentas para entrada diario de nomina
DEFINE debito,credito DECIMAL(12,2)
DEFINE detalle1 CHAR(30)
DEFINE mano_obra,sueldo_ind,monto_banco DECIMAL(12,2)
DEFINE total1,total2,total3,total4,total5,total6 DECIMAL(12,2)
DEFINE total7,total8 DECIMAL(12,2) ## Acumula los totales DEBITO Y CREDITO
DEFINE tasa1 DECIMAL(5,2) ## Almacena la tasa de la tasa de cambio
DEFINE fecha1,fecha2 DATE #### Almacena las fecha del rango de busqueda
DEFINE nomina CHAR(1)
DEFINE doble_on CHAR(2)
DEFINE negrillas_on CHAR(6)
DEFINE negrillas_off CHAR(6)
DEFINE comp_on CHAR(2)
DEFINE comp_off CHAR(2)
DEFINE doce CHAR(2)
DEFINE normal CHAR(2)
DEFINE hora CHAR(5)
DEFINE dpto INTEGER
DEFINE nomina1 CHAR(24)
DEFINE entrada CHAR(14),
nombre_cta LIKE cgtb00001.descripcion
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
PAGE LENGTH 100
FORMAT
PAGE HEADER
LET doble_on = ASCII 14
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 hora = time
##### Selecionado la descripcion del fecha2
LET l = (80 - LENGTH(p_compania.nombre CLIPPED)) / 2
PRINT COLUMN 1, comp_off,"edprrp027",
COLUMN l,p_compania.nombre CLIPPED,
COLUMN 75, "Pag. ",pageno using "###"
LET l = (80 - LENGTH("Sistema de Contabilidad")) / 2
PRINT COLUMN l, "Sistema de Contabilidad",
COLUMN 75, today using "dd/mm/yy"
LET l = (80 - LENGTH("Entrada de Diario Mat. Importada Recibida")) / 2
PRINT COLUMN l, "Entrada de Diario Mat. Importada Recibida",
COLUMN 78, hora
PRINT COLUMN 30, "Del ",fecha1 USING "dd/mm/yy", " Al ",fecha2
USING "dd/mm/yy"
# , negrillas_off
SKIP 1 LINE
PRINT COLUMN 01,"Entrada de Diario No.",
doble_on,entrada
PRINT COLUMN 1,"Observaciones: _____________________________________"
PRINT COLUMN 1," _____________________________________"
PRINT doce
PRINT COLUMN 1,
"--------------------------------------------------",
"--------------------------------------------------",
negrillas_on
PRINT COLUMN 2, "Cuenta ",
COLUMN 11, "Dpto",
COLUMN 17, "Catalogo",
COLUMN 26, "Refe",
COLUMN 41, "Concepto",
COLUMN 75, "Debe",
COLUMN 93, "Haber",negrillas_off
PRINT COLUMN 1,
"--------------------------------------------------",
"--------------------------------------------------",
negrillas_off
SKIP 1 LINE
ON EVERY ROW
SELECT a.descripcion INTO nombre_cta FROM cgtb00001 a
WHERE a.cuenta_no = x.cuenta_no
IF debito is null THEN
LET debito = 0
END IF
PRINT COLUMN 2, x.cuenta_no,
COLUMN 35, nombre_cta CLIPPED,
COLUMN 66, x.debito using "###,###,##&.&&"
LET debito = debito + x.debito
IF afecta = "S" THEN
INSERT INTO cgtb00004 VALUES(fecha2,1,entrada,x.cuenta_no,null,null,null,
null,null,detalle1,null,x.debito,0,null,SUSER_SNAME(),
GETDATE(),null,null)
END IF
ON LAST ROW
SELECT a.descripcion INTO nombre_cta FROM cgtb00001 a
WHERE a.cuenta_no = "5615"
IF credito is null THEN
LET credito = 0
END IF
IF debito is null THEN
LET debito = 0
END IF
###### Acumulando totales por columna
PRINT COLUMN 4, "5615",
COLUMN 35, nombre_cta CLIPPED;
IF t_variacion > 0 THEN
PRINT COLUMN 66, t_variacion using "###,###,##&.&&"
LET debito = debito + t_variacion
IF afecta = "S" THEN
INSERT INTO cgtb00004 VALUES(fecha2,1,entrada,"5615",null,null,
null,null,null,detalle1,null,
t_variacion,0,null,SUSER_SNAME(),GETDATE(),
null,null)
END IF
ELSE
PRINT COLUMN 84, t_variacion using "###,###,##&.&&"
LET t_variacion = t_variacion * -1
LET credito = credito + t_variacion
IF afecta = "S" THEN
INSERT INTO cgtb00004 VALUES(fecha2,1,entrada,"5615",null,null,
null,null,null,detalle1,null,0,
t_variacion,null,SUSER_SNAME(),GETDATE(),
null,null)
END IF
END IF
# Impresion detalle de la entrada con ordenes de compras
FOR i = 1 TO idx
IF entrada27[i].cod_aux is not null THEN
IF entrada27[i].valor < 0 THEN
LET entrada27[i].valor = entrada27[i].valor * -1
END IF
PRINT COLUMN 4, entrada27[i].cuenta_no,
COLUMN 17, entrada27[i].cod_aux using "&&","-",
entrada27[i].cod_sec using "&&&&",
COLUMN 26, entrada27[i].num_doc using "&&&&&&",
COLUMN 84, entrada27[i].valor using "###,###,##&.&&"
LET credito = credito + entrada27[i].valor
IF afecta = "S" THEN
IF entrada27[i].valor < 0 THEN
LET entrada27[i].valor = entrada27[i].valor * -1
END IF
INSERT INTO cgtb00004
VALUES (fecha2,1,entrada,entrada27[i].cuenta_no,null,
entrada27[i].num_doc,entrada27[i].cod_aux,
entrada27[i].cod_sec,detalle1,null,null,0,
entrada27[i].valor,null, SUSER_SNAME(),GETDATE(),null,null)
END IF
END IF
END FOR
###### Imprime total DEBITO y total CREDITO
SKIP 1 LINE
PRINT COLUMN 1,negrillas_on
PRINT COLUMN 66,"--------------",
COLUMN 84,"--------------"
PRINT COLUMN 35,"Totales-->",
COLUMN 66,debito USING "###,###,##&.&&",
COLUMN 84,credito USING "###,###,##&.&&",negrillas_off
LET debito = 0
LET credito = 0
SKIP 2 LINE
PRINT COLUMN 1, detalle1
PRINT COLUMN 1,comp_off,negrillas_off
SKIP 4 LINE
END REPORT