diff --git a/PROYECTO/PRDIR/primpresion.4gl b/PROYECTO/PRDIR/primpresion.4gl
index 9ad2f1c..2873a33 100644
--- a/PROYECTO/PRDIR/primpresion.4gl
+++ b/PROYECTO/PRDIR/primpresion.4gl
@@ -11,7 +11,7 @@
END RECORD,
nombre_cia STRING
-FUNCTION impresion(pnumoc)
+FUNCTION impresion_oc(pnumoc)
DEFINE pnumoc,I INT
DECLARE busca_orden CURSOR FOR
diff --git a/PROYECTO/PRDIR/prprmt021.4gl b/PROYECTO/PRDIR/prprmt021.4gl
index e5a8451..ea54e9d 100644
--- a/PROYECTO/PRDIR/prprmt021.4gl
+++ b/PROYECTO/PRDIR/prprmt021.4gl
@@ -177,7 +177,7 @@ END RECORD
" ORDEN ECOMMERCE ",orden_externa USING "&&&&&&&"
INPUT ARRAY detalle FROM sdetalle.* ATTRIBUTE(WITHOUT DEFAULTS)
ON ACTION impresion ATTRIBUTE(TEXT="Orden",IMAGE="printer")
- CALL impresion(pnum_oc)
+ CALL impresion_oc(pnum_oc)
ON ACTION etiqueta ATTRIBUTE(TEXT="Label",IMAGE="fa-tag")
LET datos.celular = orden.celular
LET datos.cliente = orden.nombre_envio
diff --git a/PROYECTO/lqdir/lqprrp004.4gl b/PROYECTO/lqdir/lqprrp004.4gl
index a58d13b..3f997eb 100644
--- a/PROYECTO/lqdir/lqprrp004.4gl
+++ b/PROYECTO/lqdir/lqprrp004.4gl
@@ -1,2 +1,821 @@
-{==============================================================================
PROGRAMA : LQPRRP004
SISTEMA : Sistema de Liquidacion Materiales
Objetivo : Liquidacion Mercancia Compras Exterior Prod. Terminados
PROGRAMADOR : Juan F. Soto
FECHA : Mayo 13, 1994
MODIFICADO : VALENTIN RODRIGUEZ
FECHA : MAYO, 2019
==============================================================================}
-GLOBALS "lqprgb000.4gl" ###### Variables para busqueda de rango de fecha
DEFINE elije,imp,afecta,tipo_inventario CHAR(1)
DEFINE p_ano,m_mes SMALLINT
DEFINE fecha1, fecha2 DATE ,
p_fecha CHAR(10)
DEFINE entra CHAR(25)
DEFINE t_costst DECIMAL(12,2)
DEFINE detalla CHAR(30)
DEFINE orden CHAR(10)
DEFINE t_variacion DECIMAL(12,2)
DEFINE debe, haber DECIMAL(12,2),
idz INT
###### 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_compania.* 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,5),
precio DECIMAL(12,5),
flete DECIMAL(12,5),
imp_colect DECIMAL(12,5),
imp_aduana DECIMAL(12,5),
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 tipo_inventario, 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 primera = "S"
IF tipo_inventario = '2' THEN
LET selec =
"SELECT DISTINCT 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 = '2' ",
" 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 "
ELSE
LET selec =
"SELECT DISTINCT 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 intb00001 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 = 1 ",
" 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 "
END IF
DISPLAY selec
DISPLAY "elije ",elije
LET idx = 1
PREPARE comando FROM selec
DECLARE busca CURSOR FOR comando
INSERT INTO cttb000log1 VALUES (GETDATE(),usuarios,'lqprrp004','ELIMINO')
FOREACH busca INTO busca_datos.*
DISPLAY "datos ",busca_datos.cod_sp_sec," ",busca_datos.descripcion
LET orden = busca_datos.num_oc USING "<<<<<<"
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
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
IF tipo_inventario = '2' THEN
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
ELSE
SELECT AVG(a.costo_st) INTO busca_datos.cost_std
FROM intb00013 a
WHERE 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
END IF
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
IF imp="S" THEN
LET r_filename ="lqprrp004.4rp"
IF idx = 1 THEN
IF fgl_report_loadCurrentSettings(r_filename) THEN
LET preview=1
CALL seleccionarsalida() RETURNING r_output -- load the .4rp file
CALL fgl_report_selectDevice(r_output) -- changing default
CALL fgl_report_selectPreview(preview) -- changing default
# CALL fgl_report_configurexlsxdevice(null,null,null,false,false,null,1)
LET handler = fgl_report_commitCurrentSettings() -- commit changes
END IF
LET idx = 2
START REPORT liquida1 TO XML HANDLER HANDLER
END IF
DISPLAY "DATOS "
OUTPUT TO REPORT liquida1(busca_datos.*)
END IF
END FOREACH
IF imp = "S" THEN
IF idx > 1 THEN
FINISH REPORT liquida1
END IF
END IF
IF imp_entrada = "S" THEN
CALL edprrp0271()
END IF
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,5),
precio DECIMAL(12,5),
flete DECIMAL(12,5),
imp_colect DECIMAL(12,5),
imp_aduana DECIMAL(12,5),
tasa DECIMAL(8,2),
cost_std LIKE intb00013.costo_st
END RECORD
DEFINE valor DECIMAL(12,2)
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,2),
o_impaduana,o_impcolect,o_dollar,o_cf
DECIMAL(12,2)
DEFINE 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)
## DEFINICION DE LAS VARIABLES DE IMPRESION
DEFINE hora CHAR(5)
DEFINE fechaActual, orden_tipo CHAR(12)
DEFINE codigo CHAR(25)
DEFINE codigos_sp, tituloFecha CHAR(25)
DEFINE material,titulo STRING
{OUTPUT
## DEFINICION DE LOS MARGENES DE IMPRESION
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 3
PAGE LENGTH 150}
FORMAT
PAGE HEADER
LET hora = TIME
LET fechaActual = today using "dd/mm/yy"
IF tipo_inventario = '2' THEN
LET titulo = 'Liquidacion Mercancias Productos Terminados'
ELSE
LET titulo = 'Liquidacion Mercancias Materia Prima'
END IF
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 primera = "N"
LET idz = 1
END IF
BEFORE GROUP OF x.num_oc
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
LET tituloFecha = "Del ",fecha_inicial USING "dd/mm/yy"," Al ", fecha_final USING "dd/mm/yy"
## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS
PRINTX p_compania.nombre, hora,tituloFecha, fechaActual,fecha_inicial USING "dd/mm/yy",
fecha_final USING "dd/mm/yy",titulo
ON EVERY ROW
LET seguro = 0
LET codigo = x.cod_n using "&&&&&","-",x.cod_grupo using "&&&&&","-",
x.cod_tipo using "&&&&&","-",x.cod_sec using "&&&&&"
LET codigos_sp = x.cod_sp using "&&","-",x.cod_sp_sec using "&&&&"
LET orden_tipo = x.num_oc using "&&&&&","-",x.tipo
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
LET valor = c_f * x.tasa
IF elije = "L" THEN
LET seguro = 0
END IF
IF no_reg > 1 THEN
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 material = "(",codigo,")","-",x.descripcion CLIPPED
PRINTX material, codigos_sp,x.proveedor, orden_tipo,
fob, x.flete, c_f, seguro, x.imp_colect, x.imp_aduana,
valor, cost_pl, x.cantidad, costo_unit, x.cost_std, precio_std,
variacion
IF tipo_inventario = '2' THEN
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 = 1 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())
END IF
END IF
ELSE
IF chstd = "YES" THEN
SELECT UNIQUE a.cod_n FROM intb00013 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 = 1 AND
a.mes_fin = 12
IF STATUS = NOTFOUND THEN
INSERT INTO intb00013 VALUES ('01','12',p_ano,x.cod_n,x.cod_grupo,x.cod_tipo,
x.cod_sec,costo_unit,null,SUSER_SNAME(),GETDATE(),null,
NULL)
END IF
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,usuarios,GETDATE(),x.tipo)
INSERT INTO cttb000log2
(fecha_lq,fecha,tipo_lq,num_oc,cod_n,cod_grupo,cod_tipo,cod_sec)
VALUES (fecha_final,p_fecha,elije,x.num_oc,x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec)
# 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[idz].cuenta_no = "1161"
LET entrada27[idz].cod_aux = x.cod_sp
LET entrada27[idz].cod_sec = x.cod_sp_sec
LET entrada27[idz].num_doc = x.num_oc
LET entrada27[idz].valor = o_impaduana
LET o_impaduana = 0
LET idz = idz + 1
LET entrada27[idz].cuenta_no = "1161-01"
LET entrada27[idz].cod_aux = x.cod_sp
LET entrada27[idz].cod_sec = x.cod_sp_sec
LET entrada27[idz].num_doc = x.num_oc
LET entrada27[idz].valor = o_impcolect
LET o_impcolect = 0
LET idz = idz + 1
LET entrada27[idz].cuenta_no = "1161-02"
LET entrada27[idz].cod_aux = x.cod_sp
LET entrada27[idz].cod_sec = x.cod_sp_sec
LET entrada27[idz].num_doc = x.num_oc
LET entrada27[idz].valor = o_dollar
LET o_dollar = 0
LET idz = idz + 1
LET entrada27[idz].cuenta_no = "1161-03"
LET entrada27[idz].cod_aux = x.cod_sp
LET entrada27[idz].cod_sec = x.cod_sp_sec
LET entrada27[idz].num_doc = x.num_oc
LET entrada27[idz].valor = o_cf
LET o_cf = 0
LET idz = idz + 1
END IF
PRINTX ot_fob,ot_flete,ot_cf,ot_seguro,ot_impcol,ot_impaduana, ot_dollar,
ot_costopl,ot_costo, ot_precio,ot_costst,ot_variacion
ON LAST ROW
PRINTX t_fob, t_flete, t_cf,t_seguro,t_impcol,t_impaduana,t_dollar,
t_costopl,t_costo,t_precio,t_costst,t_variacion
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 Productos Terminados
PROGRAMADOR : Juan F. Soto
FECHA REALIZACION : Mayo 20, 1994.
-------------------------------------------------------------------------------}
FUNCTION edprrp0271()
#WHENEVER ERROR CONTINUE
DEFINE longitud,u_mes,numero_ent,i SMALLINT,
ch_ano CHAR(4)
LET r_filename ="lqprrp004b.4rp"
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
BEFORE INPUT
LET numero_ent = 27
LET fecha1 =fecha_inicial
LET fecha2 =fecha_final
DISPLAY BY NAME fecha1,fecha2
CALL controlNumericoED(numero_ent, fecha1, NULL) RETURNING entra
DISPLAY BY NAME entra
AFTER FIELD entra
LET longitud = LENGTH(entra)
IF longitud != 16 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
IF fecha2 > TODAY THEN
CALL msg(57)
END IF
END INPUT
##### Creando la facilidad para cancelar proceso con DELETE O SUPR
LET i = 1
{CALL configureoutput("XLS") RETURNING handler
START REPORT entrada271 TO XML HANDLER handler}
IF i = 1 THEN
IF fgl_report_loadCurrentSettings(r_filename) THEN
LET preview=1
CALL seleccionarsalida() RETURNING r_output -- load the .4rp file
CALL fgl_report_selectDevice(r_output) -- changing default
CALL fgl_report_selectPreview(preview) -- changing default
LET handler = fgl_report_commitCurrentSettings() -- commit changes
END IF
LET i = 2
START REPORT entrada271 TO XML HANDLER HANDLER
END IF
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
##### Loop para enviar informacion al reporte
LET diario1.debito = t_costst
IF tipo_inventario = "2" THEN
LET diario1.cuenta_no = "1131-02"
ELSE
LET diario1.cuenta_no = "1151"
END IF
OUTPUT TO REPORT entrada271(diario1.*,fecha1,fecha2,detalla,entra)
IF i > 1 THEN
FINISH REPORT entrada271
END IF
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 fecha1,fecha2 DATE #### Almacena las fecha del rango de busqueda
DEFINE cod_aux_sec CHAR(6)
DEFINE doce CHAR(2)
DEFINE hora,referencia CHAR(5)
DEFINE entrada CHAR(25),
nombre_cta LIKE cgtb00001.descripcion
DEFINE fechaActual CHAR(12)
{ OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
PAGE LENGTH 150}
FORMAT
PAGE HEADER
LET hora = TIME
LET fechaActual = today using "dd/mm/yy"
##### Selecionado la descripcion del fecha
BEFORE GROUP OF x.cuenta_no
PRINTX p_compania.nombre,hora,fechaActual,fecha1,fecha2,entrada,doce
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
PRINTX x.cuenta_no, x.debito, nombre_cta
LET debito = debito + x.debito
IF afecta = "S" THEN
IF x.cuenta_no IS NOT NULL THEN
BEGIN WORK
CALL controlNumericoED(numero_ent, fecha1, usuarios) RETURNING entra
DISPLAY BY NAME entra
LET entrada = entra
INSERT INTO cgtb00004
(fecha,tipo,ref,cuenta_no,detalle_1,debito,credito,us_crea,fech_crea)
VALUES(fecha2,1,entrada,x.cuenta_no,detalle1,x.debito,0,usuarios,GETDATE())
END IF
END IF
ON LAST ROW
IF tipo_inventario = "2" THEN
SELECT a.descripcion INTO nombre_cta FROM cgtb00001 a
WHERE a.cuenta_no = "5615"
LET debe = 0
LET haber = 0
LET referencia = "5615"
ELSE
SELECT a.descripcion INTO nombre_cta FROM cgtb00001 a
WHERE a.cuenta_no = "1152"
LET debe = 0
LET haber = 0
LET referencia = "1152"
END IF
IF credito is null THEN
LET credito = 0
END IF
IF debito is null THEN
LET debito = 0
END IF
IF t_variacion > 0 THEN
LET debito = debito + t_variacion
LET debe = t_variacion
IF afecta = "S" THEN
IF tipo_inventario = "2" THEN
INSERT INTO cgtb00004(fecha,tipo,ref,cuenta_no,detalle_1,debito
,credito,us_crea,fech_crea)
VALUES(fecha2,1,entrada,"5615",detalle1,t_variacion,0,usuarios,GETDATE())
ELSE
INSERT INTO cgtb00004(fecha,tipo,ref,cuenta_no,detalle_1,debito
,credito,us_crea,fech_crea)
VALUES(fecha2,1,entrada,"1152",detalle1,t_variacion,0,usuarios,GETDATE())
END IF
END IF
ELSE
LET t_variacion = t_variacion * -1
LET credito = credito + t_variacion
LET haber = t_variacion
IF afecta = "S" THEN
INSERT INTO cgtb00004(fecha,tipo,ref,cuenta_no,detalle_1,debito
,credito,us_crea,fech_crea)
VALUES(fecha2,1,entrada,"5615",detalle1,0,t_variacion,SUSER_SNAME(),GETDATE() )
END IF
END IF
###### Acumulando totales por columna
PRINTX referencia, nombre_cta, debe, haber
LET credito = 0
# Impresion detalle de la entrada con ordenes de compras
FOR i = 1 TO idz
# IF entrada27[i].cuenta_no IS NOT NULL THEN
# 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
LET cod_aux_sec = entrada27[i].cod_aux using "&&","-",entrada27[i].cod_sec using "&&&&"
IF cod_aux_sec IS NULL THEN
LET cod_aux_sec = ' '
END IF
# DISPLAY "datos ",i USING "<<<"," ",entrada27[i].cod_aux using "&&","-",entrada27[i].cod_sec using "&&&&"
PRINTX entrada27[i].cuenta_no, cod_aux_sec, entrada27[i].num_doc,
entrada27[i].valor
IF entrada27[i].valor IS NULL THEN
LET entrada27[i].valor=0
END IF
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
IF entrada27[i].cuenta_no IS NOT NULL THEN
INSERT INTO cgtb00004 (fecha,tipo,ref,cuenta_no,num_doc,cod_aux
,cod_sec,detalle_1,debito,credito,us_crea,fech_crea)
VALUES (fecha2,1,entrada,entrada27[i].cuenta_no,
entrada27[i].num_doc,entrada27[i].cod_aux,
entrada27[i].cod_sec,detalle1,0,
entrada27[i].valor,SUSER_SNAME(),GETDATE())
END IF
END IF
# END IF
#END IF
END FOR
IF afecta = "S" THEN
COMMIT WORK
END IF
###### Imprime total DEBITO y total CREDITO
PRINTX debito,credito,detalle1
LET debito = 0
LET credito = 0
END REPORT
+{==============================================================================
+ PROGRAMA : LQPRRP004
+ SISTEMA : Sistema de Liquidacion Materiales
+ Objetivo : Liquidacion Mercancia Compras Exterior Prod. Terminados
+ PROGRAMADOR : Juan F. Soto
+ FECHA : Mayo 13, 1994
+ MODIFICADO : VALENTIN RODRIGUEZ
+ FECHA : MAYO, 2019
+==============================================================================}
+GLOBALS "lqprgb000.4gl" ###### Variables para busqueda de rango de fecha
+DEFINE elije,imp,afecta,tipo_inventario CHAR(1)
+DEFINE p_ano,m_mes SMALLINT
+DEFINE fecha1, fecha2 DATE ,
+ p_fecha CHAR(10)
+DEFINE entra CHAR(25)
+DEFINE t_costst DECIMAL(12,2)
+DEFINE detalla CHAR(30)
+DEFINE orden CHAR(10)
+DEFINE t_variacion DECIMAL(12,2)
+DEFINE debe, haber DECIMAL(12,2),
+ idz INT
+
+###### 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_compania.* 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,5),
+ precio DECIMAL(12,5),
+ flete DECIMAL(12,5),
+ imp_colect DECIMAL(12,5),
+ imp_aduana DECIMAL(12,5),
+ 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 tipo_inventario, 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 primera = "S"
+ IF tipo_inventario = '2' THEN
+ LET selec =
+ "SELECT DISTINCT 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 = '2' ",
+ " 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 "
+ ELSE
+ LET selec =
+ "SELECT DISTINCT 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 intb00001 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 = 1 ",
+ " 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 "
+ END IF
+ DISPLAY selec
+ DISPLAY "elije ",elije
+ LET idx = 1
+ PREPARE comando FROM selec
+ DECLARE busca CURSOR FOR comando
+
+ INSERT INTO cttb000log1 VALUES (GETDATE(),usuarios,'lqprrp004','ELIMINO')
+ FOREACH busca INTO busca_datos.*
+ DISPLAY "datos ",busca_datos.cod_sp_sec," ",busca_datos.descripcion
+ LET orden = busca_datos.num_oc USING "<<<<<<"
+
+ 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
+
+ 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
+ IF tipo_inventario = '2' THEN
+ 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
+ ELSE
+ SELECT AVG(a.costo_st) INTO busca_datos.cost_std
+ FROM intb00013 a
+ WHERE 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
+
+ END IF
+ 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
+
+ IF imp="S" THEN
+ LET r_filename ="lqprrp004.4rp"
+ IF idx = 1 THEN
+ IF fgl_report_loadCurrentSettings(r_filename) THEN
+ LET preview=1
+ CALL seleccionarsalida() RETURNING r_output -- load the .4rp file
+ CALL fgl_report_selectDevice(r_output) -- changing default
+ CALL fgl_report_selectPreview(preview) -- changing default
+ # CALL fgl_report_configurexlsxdevice(null,null,null,false,false,null,1)
+ LET handler = fgl_report_commitCurrentSettings() -- commit changes
+ END IF
+ LET idx = 2
+ START REPORT liquida1 TO XML HANDLER HANDLER
+ END IF
+ DISPLAY "DATOS "
+ OUTPUT TO REPORT liquida1(busca_datos.*)
+ END IF
+ END FOREACH
+
+ IF imp = "S" THEN
+ IF idx > 1 THEN
+ FINISH REPORT liquida1
+ END IF
+ END IF
+
+ IF imp_entrada = "S" THEN
+ CALL edprrp0271()
+ END IF
+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,5),
+ precio DECIMAL(12,5),
+ flete DECIMAL(12,5),
+ imp_colect DECIMAL(12,5),
+ imp_aduana DECIMAL(12,5),
+ tasa DECIMAL(8,2),
+ cost_std LIKE intb00013.costo_st
+ END RECORD
+
+ DEFINE valor DECIMAL(12,2)
+ 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,2),
+ o_impaduana,o_impcolect,o_dollar,o_cf
+ DECIMAL(12,2)
+ DEFINE 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)
+
+ ## DEFINICION DE LAS VARIABLES DE IMPRESION
+ DEFINE hora CHAR(5)
+ DEFINE fechaActual, orden_tipo CHAR(12)
+ DEFINE codigo CHAR(25)
+ DEFINE codigos_sp, tituloFecha CHAR(25)
+ DEFINE material,titulo STRING
+
+ {OUTPUT
+ ## DEFINICION DE LOS MARGENES DE IMPRESION
+ TOP MARGIN 0
+ LEFT MARGIN 0
+ BOTTOM MARGIN 3
+ PAGE LENGTH 150}
+ FORMAT
+ PAGE HEADER
+ LET hora = TIME
+ LET fechaActual = today using "dd/mm/yy"
+ IF tipo_inventario = '2' THEN
+ LET titulo = 'Liquidacion Mercancias Productos Terminados'
+ ELSE
+ LET titulo = 'Liquidacion Mercancias Materia Prima'
+ END IF
+ 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 primera = "N"
+ LET idz = 1
+ END IF
+
+BEFORE GROUP OF x.num_oc
+
+ 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
+ LET tituloFecha = "Del ",fecha_inicial USING "dd/mm/yy"," Al ", fecha_final USING "dd/mm/yy"
+ ## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS
+ PRINTX p_compania.nombre, hora,tituloFecha, fechaActual,fecha_inicial USING "dd/mm/yy",
+ fecha_final USING "dd/mm/yy",titulo
+ ON EVERY ROW
+
+ LET seguro = 0
+ LET codigo = x.cod_n using "&&&&&","-",x.cod_grupo using "&&&&&","-",
+ x.cod_tipo using "&&&&&","-",x.cod_sec using "&&&&&"
+ LET codigos_sp = x.cod_sp using "&&","-",x.cod_sp_sec using "&&&&"
+ LET orden_tipo = x.num_oc using "&&&&&","-",x.tipo
+
+ 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
+ LET valor = c_f * x.tasa
+
+ IF elije = "L" THEN
+ LET seguro = 0
+ END IF
+
+ IF no_reg > 1 THEN
+ 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 material = "(",codigo,")","-",x.descripcion CLIPPED
+
+ PRINTX material, codigos_sp,x.proveedor, orden_tipo,
+ fob, x.flete, c_f, seguro, x.imp_colect, x.imp_aduana,
+ valor, cost_pl, x.cantidad, costo_unit, x.cost_std, precio_std,
+ variacion
+
+ IF tipo_inventario = '2' THEN
+ 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 = 1 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())
+ END IF
+ END IF
+ ELSE
+ IF chstd = "YES" THEN
+ SELECT UNIQUE a.cod_n FROM intb00013 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 = 1 AND
+ a.mes_fin = 12
+ IF STATUS = NOTFOUND THEN
+ INSERT INTO intb00013 VALUES ('01','12',p_ano,x.cod_n,x.cod_grupo,x.cod_tipo,
+ x.cod_sec,costo_unit,null,SUSER_SNAME(),GETDATE(),null,
+ NULL)
+ END IF
+ 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,usuarios,GETDATE(),x.tipo)
+
+ INSERT INTO cttb000log2
+ (fecha_lq,fecha,tipo_lq,num_oc,cod_n,cod_grupo,cod_tipo,cod_sec)
+ VALUES (fecha_final,p_fecha,elije,x.num_oc,x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec)
+
+ # 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[idz].cuenta_no = "1161"
+ LET entrada27[idz].cod_aux = x.cod_sp
+ LET entrada27[idz].cod_sec = x.cod_sp_sec
+ LET entrada27[idz].num_doc = x.num_oc
+ LET entrada27[idz].valor = o_impaduana
+ LET o_impaduana = 0
+ LET idz = idz + 1
+
+ LET entrada27[idz].cuenta_no = "1161-01"
+ LET entrada27[idz].cod_aux = x.cod_sp
+ LET entrada27[idz].cod_sec = x.cod_sp_sec
+ LET entrada27[idz].num_doc = x.num_oc
+ LET entrada27[idz].valor = o_impcolect
+ LET o_impcolect = 0
+ LET idz = idz + 1
+
+ LET entrada27[idz].cuenta_no = "1161-02"
+ LET entrada27[idz].cod_aux = x.cod_sp
+ LET entrada27[idz].cod_sec = x.cod_sp_sec
+ LET entrada27[idz].num_doc = x.num_oc
+ LET entrada27[idz].valor = o_dollar
+ LET o_dollar = 0
+ LET idz = idz + 1
+
+ LET entrada27[idz].cuenta_no = "1161-03"
+ LET entrada27[idz].cod_aux = x.cod_sp
+ LET entrada27[idz].cod_sec = x.cod_sp_sec
+ LET entrada27[idz].num_doc = x.num_oc
+ LET entrada27[idz].valor = o_cf
+ LET o_cf = 0
+ LET idz = idz + 1
+
+ END IF
+
+ PRINTX ot_fob,ot_flete,ot_cf,ot_seguro,ot_impcol,ot_impaduana, ot_dollar,
+ ot_costopl,ot_costo, ot_precio,ot_costst,ot_variacion
+
+ ON LAST ROW
+
+ PRINTX t_fob, t_flete, t_cf,t_seguro,t_impcol,t_impaduana,t_dollar,
+ t_costopl,t_costo,t_precio,t_costst,t_variacion
+
+ 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 Productos Terminados
+PROGRAMADOR : Juan F. Soto
+FECHA REALIZACION : Mayo 20, 1994.
+-------------------------------------------------------------------------------}
+
+FUNCTION edprrp0271()
+
+ #WHENEVER ERROR CONTINUE
+ DEFINE longitud,u_mes,numero_ent,i SMALLINT,
+ ch_ano CHAR(4)
+ LET r_filename ="lqprrp004b.4rp"
+
+ 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
+ BEFORE INPUT
+ LET numero_ent = 27
+ LET fecha1 =fecha_inicial
+ LET fecha2 =fecha_final
+ DISPLAY BY NAME fecha1,fecha2
+
+ CALL controlNumericoED(numero_ent, fecha1, NULL) RETURNING entra
+ DISPLAY BY NAME entra
+
+ AFTER FIELD entra
+ LET longitud = LENGTH(entra)
+ IF longitud != 16 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
+ IF fecha2 > TODAY THEN
+ CALL msg(57)
+ END IF
+ END INPUT
+ ##### Creando la facilidad para cancelar proceso con DELETE O SUPR
+
+ LET i = 1
+
+ {CALL configureoutput("XLS") RETURNING handler
+ START REPORT entrada271 TO XML HANDLER handler}
+ IF i = 1 THEN
+
+ IF fgl_report_loadCurrentSettings(r_filename) THEN
+
+ LET preview=1
+ CALL seleccionarsalida() RETURNING r_output -- load the .4rp file
+ CALL fgl_report_selectDevice(r_output) -- changing default
+ CALL fgl_report_selectPreview(preview) -- changing default
+ LET handler = fgl_report_commitCurrentSettings() -- commit changes
+
+ END IF
+ LET i = 2
+ START REPORT entrada271 TO XML HANDLER HANDLER
+ END IF
+
+ DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
+ AT 19,14 ATTRIBUTE (REVERSE)
+
+ ##### Loop para enviar informacion al reporte
+
+ LET diario1.debito = t_costst
+ IF tipo_inventario = "2" THEN
+ LET diario1.cuenta_no = "1131-02"
+ ELSE
+ LET diario1.cuenta_no = "1151"
+ END IF
+ OUTPUT TO REPORT entrada271(diario1.*,fecha1,fecha2,detalla,entra)
+
+ IF i > 1 THEN
+ FINISH REPORT entrada271
+ END IF
+ 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 fecha1,fecha2 DATE #### Almacena las fecha del rango de busqueda
+ DEFINE numero_ent SMALLINT
+ DEFINE cod_aux_sec CHAR(6)
+ DEFINE doce CHAR(2)
+ DEFINE hora,referencia CHAR(5)
+ DEFINE entrada CHAR(25),
+ nombre_cta LIKE cgtb00001.descripcion
+ DEFINE fechaActual CHAR(12)
+
+ { OUTPUT
+ TOP MARGIN 0
+ LEFT MARGIN 0
+ BOTTOM MARGIN 2
+ PAGE LENGTH 150}
+
+ FORMAT
+ PAGE HEADER
+ LET hora = TIME
+ LET fechaActual = today using "dd/mm/yy"
+
+ ##### Selecionado la descripcion del fecha
+
+ BEFORE GROUP OF x.cuenta_no
+ PRINTX p_compania.nombre,hora,fechaActual,fecha1,fecha2,entrada,doce
+
+ 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
+
+ PRINTX x.cuenta_no, x.debito, nombre_cta
+
+ LET debito = debito + x.debito
+
+ IF afecta = "S" THEN
+ IF x.cuenta_no IS NOT NULL THEN
+ BEGIN WORK
+
+ LET numero_ent = 27
+ CALL controlNumericoED(numero_ent, fecha1, usuarios) RETURNING entra
+ DISPLAY BY NAME entra
+
+ LET entrada = entra
+
+ INSERT INTO cgtb00004
+ (fecha,tipo,ref,cuenta_no,detalle_1,debito,credito,us_crea,fech_crea)
+ VALUES(fecha2,1,entrada,x.cuenta_no,detalle1,x.debito,0,usuarios,GETDATE())
+ END IF
+ END IF
+
+ ON LAST ROW
+ IF tipo_inventario = "2" THEN
+ SELECT a.descripcion INTO nombre_cta FROM cgtb00001 a
+ WHERE a.cuenta_no = "5615"
+
+ LET debe = 0
+ LET haber = 0
+ LET referencia = "5615"
+ ELSE
+ SELECT a.descripcion INTO nombre_cta FROM cgtb00001 a
+ WHERE a.cuenta_no = "1152"
+
+ LET debe = 0
+ LET haber = 0
+ LET referencia = "1152"
+ END IF
+ IF credito is null THEN
+ LET credito = 0
+ END IF
+ IF debito is null THEN
+ LET debito = 0
+ END IF
+
+ IF t_variacion > 0 THEN
+ LET debito = debito + t_variacion
+ LET debe = t_variacion
+ IF afecta = "S" THEN
+ IF tipo_inventario = "2" THEN
+ INSERT INTO cgtb00004(fecha,tipo,ref,cuenta_no,detalle_1,debito
+ ,credito,us_crea,fech_crea)
+ VALUES(fecha2,1,entrada,"5615",detalle1,t_variacion,0,usuarios,GETDATE())
+ ELSE
+ INSERT INTO cgtb00004(fecha,tipo,ref,cuenta_no,detalle_1,debito
+ ,credito,us_crea,fech_crea)
+ VALUES(fecha2,1,entrada,"1152",detalle1,t_variacion,0,usuarios,GETDATE())
+ END IF
+ END IF
+ ELSE
+ LET t_variacion = t_variacion * -1
+ LET credito = credito + t_variacion
+ LET haber = t_variacion
+
+ IF afecta = "S" THEN
+ INSERT INTO cgtb00004(fecha,tipo,ref,cuenta_no,detalle_1,debito
+ ,credito,us_crea,fech_crea)
+ VALUES(fecha2,1,entrada,"5615",detalle1,0,t_variacion,SUSER_SNAME(),GETDATE() )
+ END IF
+ END IF
+
+ ###### Acumulando totales por columna
+ PRINTX referencia, nombre_cta, debe, haber
+ LET credito = 0
+ # Impresion detalle de la entrada con ordenes de compras
+ FOR i = 1 TO idz
+ # IF entrada27[i].cuenta_no IS NOT NULL THEN
+ # 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
+
+ LET cod_aux_sec = entrada27[i].cod_aux using "&&","-",entrada27[i].cod_sec using "&&&&"
+ IF cod_aux_sec IS NULL THEN
+ LET cod_aux_sec = ' '
+ END IF
+ # DISPLAY "datos ",i USING "<<<"," ",entrada27[i].cod_aux using "&&","-",entrada27[i].cod_sec using "&&&&"
+ PRINTX entrada27[i].cuenta_no, cod_aux_sec, entrada27[i].num_doc,
+ entrada27[i].valor
+ IF entrada27[i].valor IS NULL THEN
+ LET entrada27[i].valor=0
+ END IF
+ 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
+ IF entrada27[i].cuenta_no IS NOT NULL THEN
+ INSERT INTO cgtb00004 (fecha,tipo,ref,cuenta_no,num_doc,cod_aux
+ ,cod_sec,detalle_1,debito,credito,us_crea,fech_crea)
+ VALUES (fecha2,1,entrada,entrada27[i].cuenta_no,
+ entrada27[i].num_doc,entrada27[i].cod_aux,
+ entrada27[i].cod_sec,detalle1,0,
+ entrada27[i].valor,SUSER_SNAME(),GETDATE())
+ END IF
+ END IF
+ # END IF
+ #END IF
+ END FOR
+ IF afecta = "S" THEN
+ COMMIT WORK
+ END IF
+ ###### Imprime total DEBITO y total CREDITO
+ PRINTX debito,credito,detalle1
+ LET debito = 0
+ LET credito = 0
+END REPORT
+
diff --git a/PROYECTO/mbsERP.4pw b/PROYECTO/mbsERP.4pw
index 0994025..502b77a 100644
--- a/PROYECTO/mbsERP.4pw
+++ b/PROYECTO/mbsERP.4pw
@@ -363,7 +363,7 @@
-
+
@@ -819,7 +819,7 @@
-
+