Files
MBS/PROYECTOS/copia/ipprmt044.4gl
T

4273 lines
159 KiB
Plaintext

{--------------------------------------------------------------------------
PROGRAMA : IPPRMT044
OBJETIVO : Programa Captura Documento Otros Movimientos de
Inventario de Producto Terminados.
PROGRAMADOR : Juan Soto.
FECHA REALIZACION : AGOSTO 1997.
--------------------------------------------------------------------------}
GLOBALS
"ipprgb000.4gl"
DEFINE num_cr_e,num_doc_e,factura_e,xconduce_no,num_doc_ret,ordenx,tmpnumero,tmpnueroExistencia,
xnum_doc_c,dias_factura INTEGER,
hacerdocumento BOOLEAN,
direccion_p VARCHAR(100),
pdescripmov VARCHAR(80)
DEFINE factor_conv DYNAMIC ARRAY OF DECIMAL(12,5),
cantidad_factura,cantidad_devuelta,total_medida,cantidad_orden,
cantidad_recibida,diferencia,cantidadRequisicion,Rcantidad_requisicion,
cantidad_orden1,pcantidadConduce,transito,existencia,reservado
DEC(12,5)
DEFINE ac_cli,reimpresion,pcerrada CHAR(1),
pnum_req,xcotizacion INTEGER,
pcontrol_cliente CHAR(3),
aplica_dev CHAR(2),
pcontrol_despacho,pcontrol_transferencia,chconduce,control_devolucion,pcontrol_departamento CHAR(2),
procedimiento ,
PCCEMAIL,TOemail VARCHAR(150),
cuerpo_correo VARCHAR(230),
CCEmail,subject VARCHAR(100),
psec_vend INT,
almacen_destino,almacen_origen VARCHAR(40),
xbodega VARCHAR(30)
DEFINE busca1,busca2,chitbis,_chitbis CHAR(10),
pitbis,pdescuento,xporc_Desc DEC(12,2)
DEFINE nombre_emp,nom_cli CHAR(30)
DEFINE p_num_doc INTEGER
DEFINE p_itbi,valor_fac,p_total DECIMAL(12,2)
DEFINE salir,via CHAR(1),
ptotalb,xdescuento DEC(12,2)
DEFINE prtb09 RECORD LIKE prtb00009.*
DEFINE busca_v RECORD
sec_cliente INTEGER,
nombre CHAR(30)
END RECORD
DEFINE despiece DYNAMIC ARRAY OF RECORD
etiqueta CHAR(20),
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
lado_1 DEC(12,5),
lado_2 DEC(12,5),
lado_3 DEC(12,5),
cantidad DEC(12,5),
medida DEC(12,5)
END RECORD,
cantidad_conduce DEC(12,5),
psucid SMALLINT
DEFINE arr_recibo RECORD
cod_mov LIKE iptb00006.cod_mov,
aplica_a LIKE cctb00001.aplica_a,
valor_pen DECIMAL(12,2),
desc_p LIKE cctb00001.monto_desc,
val_desc DECIMAL(12,2),
valor_pag DECIMAL(12,2)
END RECORD
DEFINE fact_gral RECORD
cod_cia LIKE vetb00002.cod_cia,
ventas LIKE vetb00002.ventas,
--zona CHAR(3),
factura LIKE vetb00002.factura,
bodega SMALLINT,
--conduce LIKE vetb00002.conduce,
--fecha_conduce DATE,
--fecha_factura DATE,
--tipo_cliente LIKE vetb00002.tipo_cliente,
--sec_cliente LIKE vetb00002.sec_cliente,
--nombre CHAR(30),
direccion CHAR(80),
--ciudad CHAR(20),
--prima_us LIKE vetb00002.prima_us,
--porc_desc LIKE vetb00002.porc_desc,
--cond_pago LIKE vetb00002.cond_pago,
--orden INT,
--fecha_orden DATE,
--porc_itbi LIKE vetb00002.porc_itbi,
--sec_vend LIKE vetb00002.sec_vend,
--nombre_vend CHAR(60),
--cod_transp LIKE iptb00006.cod_transp,
--sec_transp LIKE iptb00006.sec_transp,
--cod_tarifa LIKE iptb00006.cod_tarifa,
--nombre_tran CHAR(30),
--fecha_embarque DATE,
--placa_transp LIKE iptb00006.placa,
--sub_total DECIMAL(12,2),
--desc_valor DECIMAL(12,2),
--itbi DECIMAL(12,2),
--total_fact DECIMAL(12,2)
fecha_despacho DATE
END RECORD
DEFINE recibo RECORD
num_doc LIKE cctb00001.num_doc,
tipo_cliente LIKE cctb00001.tipo_cliente,
sec_cliente LIKE cctb00001.sec_cliente,
cod_emp_sec LIKE cctb00001.cod_emp_sec,
fecha_orig LIKE cctb00001.fecha_orig,
itbi DECIMAL(8,2),
concepto CHAR(60)
END RECORD
MAIN
DEFER INTERRUPT
CALL STARTLOG("ipmt044.log")
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
CALL ARG_VAL(4) RETURNING impresor1
CONNECT to "marmotech" AS "SQL_E" USER usuarios USING clave
CONNECT to "smarmotech" AS "SQL_C" USER usuarios USING clave
--CONNECT to "smarmotech" USER usuarios USING clave
SELECT * INTO p_companias.* FROM companias
CALL ipprmt044()
END MAIN
FUNCTION busca_cliente()
LET int_flag = FALSE
OPEN WINDOW cliente AT 10,9 WITH FORM "ipfmwd009"
ATTRIBUTE(BORDER,FORM LINE FIRST + 2)
CONSTRUCT BY NAME criterio ON a.tipo_cliente,a.sec_cliente,a.nombre
LET selec = "SELECT a.tipo_cliente,a.sec_cliente,a.nombre FROM vetb00004 a ",
"WHERE a.status_t IS NULL AND ",criterio CLIPPED, "ORDER BY 1,2"
PREPARE comando3 FROM selec
DECLARE comp3 CURSOR FOR comando3
LET idx = 1
FOREACH comp3 INTO clientes[idx].*
LET idx = idx + 1
IF idx = 49 THEN
EXIT FOREACH
END IF
END FOREACH
CALL SET_COUNT(idx - 1)
DISPLAY ARRAY clientes TO s_cliente.*
LET idx = ARR_CURR()
CLOSE WINDOW cliente
END FUNCTION
FUNCTION ipprmt044()
DEFINE fecha CHAR(8)
DEFINE hora CHAR(5)
CLEAR SCREEN
OPTIONS
ERROR LINE 24,
FORM LINE 4,
COMMENT LINE 24,
PROMPT LINE 24
LET fecha = today USING "dd/mm/yyyy"
LET hora = time
LET lj = (80 - LENGTH(p_companias.nombre CLIPPED))/2
DISPLAY p_companias.nombre CLIPPED AT 1,lj
ATTRIBUTE (REVERSE,BLUE)
DISPLAY fecha AT 1,70 ATTRIBUTE (BLUE)
DISPLAY hora AT 2,73 ATTRIBUTE (BLUE)
DISPLAY "ipprmt044" AT 1,3 ATTRIBUTE (BLUE)
DISPLAY "Otros Movimientos" AT 2,30
DISPLAY "<Esc> Adiciona Registro" AT 3,2 ATTRIBUTE (BLUE,REVERSE)
DISPLAY "<Delete> Cancela Operacion" AT 3,54 ATTRIBUTE (BLUE,REVERSE)
OPEN FORM ipfmmt044 FROM "ipfmmt044"
DISPLAY FORM ipfmmt044
CALL ipprad44()
END FUNCTION
FUNCTION ipprad44()
DEFINE vexistencia,estado_req BOOLEAN
DIALOG ATTRIBUTE(UNBUFFERED)
INPUT BY NAME otros_mov.*,num_doc_ret,pnum_req, aplica_dev ATTRIBUTE( WITHOUT DEFAULTS)
BEFORE INPUT
LET pnum_req = NULL
LET num_doc_ret = NULL
INITIALIZE otros_mov.* TO NULL
LET otros_mov.cod_cia = 1
SELECT a.bodega,a.sucid INTO otros_mov.bodega,psucid
FROM seg0001 a
WHERE a.usuario = usuarios
LET k1 = '1'
CALL bodegas(k1)
DISPLAY BY NAME otros_mov.bodega
CALL cmovimientos()
LET otros_mov.cod_mov=30
DISPLAY BY NAME otros_mov.cod_mov
#CALL piking(usuarios,clave,impresor,otros_mov.bodega,psucid)
AFTER FIELD num_doc_ret
IF otros_mov.cod_mov = 12 OR otros_mov.cod_mov = 13 THEN
IF num_doc_ret IS NULL THEN
CALL fgl_winmessage("ERROR","NO PUEDE DEJAR EN BLANCO NUMERO DOCUMENTO RE-TRABAJO","INFO")
NEXT FIELD num_doc_ret
END IF
END IF
IF num_doc_ret IS NOT NULL THEN
SELECT a.num_oc,a.tipo_cliente,a.sec_cliente,b.nombre,a.conduce_no,a.factura,a.num_req
INTO otros_mov.conduce_no,otros_mov.cod_sp,otros_mov.cod_sp_sec,otros_mov.descrip4,xconduce_no,
otros_mov.fact_no,pnum_req
FROM svtb00007 a,vetb00004 b
WHERE (a.num_doc = num_doc_ret) AND a.tipo_cliente = b.tipo_cliente AND
a.sec_cliente = b.sec_cliente AND
a.status_t IS NULL
IF STATUS = NOTFOUND THEN
CALL fgl_winmessage("ERROR","DOCUMENTO RE-TRABAJO NO EXISTE","INFO")
NEXT FIELD num_doc_ret
END IF
IF otros_mov.fact_no IS NULL THEN
SELECT a.factura, a.fecha_factura INTO otros_mov.fact_no, fact_gral.fecha_despacho
FROM vetb00002 a WHERE (a.conduce = xconduce_no AND
a.tipo_cliente = otros_mov.cod_sp AND
a.sec_cliente = otros_mov.cod_sp_sec) AND
a.status_t IS NULL
ELSE
SELECT a.fecha_factura INTO fact_gral.fecha_despacho
FROM vetb00002 a WHERE (a.factura = otros_mov.fact_no AND
a.tipo_cliente = otros_mov.cod_sp AND
a.sec_cliente = otros_mov.cod_sp_sec) AND
a.status_t IS NULL
END IF
DISPLAY BY NAME otros_mov.fact_no,pnum_req,otros_mov.conduce_no
IF otros_mov.fact_no IS NULL THEN
NEXT FIELD fact_no
END IF
# CONSULTA QUE ESTE FORMULARIO NO EXISTA EN LA TABLA TRANSACCIONES INVENTARIOS
SELECT DISTINCT a.num_doc_retrabajo FROM iptb00006 a
WHERE a.num_doc_retrabajo = num_doc_ret AND
a.status_t IS NULL
IF STATUS <> NOTFOUND THEN
CALL fgl_winmessage("INFO","DOCUMENTO RETRABAJO YA TIENE DEVOLUCION","INFO")
NEXT FIELD num_doc_ret
END IF
END IF
ON KEY (F2)
LET reimpresion = "S"
CALL consulta()
ON KEY(CONTROL-W)
IF INFIELD(cod_sp_sec) OR INFIELD(cod_sp) THEN
CALL busca_cliente()
LET otros_mov.cod_sp = clientes[idx].tipo_cliente
LET otros_mov.cod_sp_sec = clientes[idx].sec_cliente
LET otros_mov.descrip4 = clientes[idx].nombre
DISPLAY BY NAME otros_mov.cod_sp,
otros_mov.cod_sp_sec,
otros_mov.descrip4
END IF
AFTER FIELD cod_cia
IF otros_mov.cod_cia IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_cia
END IF
IF otros_mov.cod_cia = 1 THEN
LET nombre_cia = p_companias.nombre
ELSE
LET nombre_cia = ""
END IF
DISPLAY BY NAME nombre_cia
AFTER FIELD pnum_req
IF otros_mov.cod_mov = 12 OR otros_mov.cod_mov=13 THEN
IF pnum_req IS NULL THEN
CALL msg(16)
NEXT FIELD pnum_req
END IF
SELECT DISTINCT a.num_req FROM iptb00006 a
WHERE a.num_req = pnum_req AND a.status_t IS NULL
IF STATUS = NOTFOUND THEN
CALL msg(3)
NEXT FIELD pnum_req
END IF
END IF
AFTER FIELD fecha
IF otros_mov.fecha > TODAY THEN
LET numero_msg = 189
CALL msg(numero_msg)
NEXT FIELD fecha
END IF
LET p_fechas = otros_mov.fecha using "dd/mm/yyyy"
CALL prd(p_fechas,usuarios) RETURNING bandera
LET otros_mov.fecha = p_fechas
DISPLAY BY NAME otros_mov.fecha
IF bandera = 1 THEN
LET bandera = 0
NEXT FIELD fecha
END IF
AFTER FIELD fact_no
LET otros_mov.cod_sp = null
LET otros_mov.cod_sp_sec = null
IF otros_mov.cod_mov = 12 or otros_mov.cod_mov = 13 THEN
IF otros_mov.fact_no is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fact_no
END IF
SELECT UNIQUE tipo_cliente,sec_cliente,orden
INTO otros_mov.cod_sp,otros_mov.cod_sp_sec,otros_mov.conduce_no
FROM vetb00002 WHERE factura=otros_mov.fact_no and status_t is null AND
CONVERT(CHAR(10),fecha_factura,101) >= '01/01/2007'
IF status = NOTFOUND THEN
LET numero_msg = 102
CALL msg(numero_msg)
NEXT FIELD fact_no
END IF
DISPLAY BY NAME otros_mov.conduce_no
# CONTROL `
LET cantidad_factura = 0
LET cantidad_devuelta = 0
SELECT SUM(a.cantidad) INTO cantidad_factura
FROM vetb00003 a
WHERE a.factura = otros_mov.fact_no AND
a.status_t IS NULL AND
a.fech_crea > '2009-01-01 08:00'
SELECT SUM(a.cantidad_2) INTO cantidad_devuelta
FROM iptb00006 a
WHERE a.fact_no = otros_mov.fact_no AND
a.status_t IS NULL AND
a.fech_crea > '2009-01-01 08:00' and
a.cod_mov in (12,13)
IF cantidad_devuelta + .05 > cantidad_factura THEN
LET numero_msg =238
CALL msg(numero_msg)
NEXT FIELD fact_no
END IF
END IF
IF otros_mov.fact_no is not null THEN
IF otros_mov.cod_mov = 32 THEN
SELECT unique cod_n FROM iptb00006
WHERE fact_no = otros_mov.fact_no and cod_mov = otros_mov.cod_mov and
CONVERT(CHAR(10), fecha,101) >= "01011994" AND status_t is null
IF status != NOTFOUND THEN
LET numero_msg = 103
CALL msg(numero_msg)
NEXT FIELD fact_no
END IF
END IF
END IF
DISPLAY BY NAME otros_mov.cod_sp,otros_mov.cod_sp_sec
AFTER FIELD cod_transp
IF otros_mov.cod_mov = 30 OR otros_mov.conduce_no = 31 OR otros_mov.cod_mov = 55 or
otros_mov.cod_mov = 12 OR otros_mov.cod_mov = 13
THEN
IF otros_mov.cod_transp is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_transp
END IF
END IF
AFTER FIELD sec_transp
IF otros_mov.cod_mov = 12 OR otros_mov.cod_mov = 13 THEN
IF otros_mov.sec_transp IS NULL THEN
CALL msg(16)
NEXT FIELD sec_transp
END IF
END IF
IF pcontrol_despacho = "SI" THEN
IF otros_mov.sec_transp is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_transp
END IF
SELECT nombre INTO descrip2 FROM vetb00015
WHERE cod_transp=otros_mov.cod_transp and
sec_transp=otros_mov.sec_transp and
status_t is null
IF status = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_transp
END IF
DISPLAY BY NAME descrip2
END IF
AFTER FIELD cod_tarifa
IF otros_mov.cod_tarifa is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
# NEXT FIELD cod_tarifa
END IF
SELECT descrip INTO descrip1 FROM vetb00023
WHERE cod_tarifa = otros_mov.cod_tarifa and status_t is null
IF status = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
#NEXT FIELD cod_tarifa
END IF
DISPLAY BY NAME descrip1
# ON ACTION piking
# CALL piking(usuarios,clave,impresor,otros_mov.bodega,psucid)
BEFORE FIELD num_doc
LET tmpnumero = 0
SELECT a.num_doc INTO tmpnumero FROM iptb00043 a
WHERE usuario = usuarios
IF STATUS = NOTFOUND THEN
INSERT INTO iptb00043 VALUES (1,usuarios)
LET tmpnumero = 1
ELSE
UPDATE iptb00043 SET num_doc = tmpnumero + 1
WHERE usuario = usuarios
END IF
LET tmpnumero = tmpnumero + 1
LET otros_mov.num_doc = tmpnumero
DISPLAY BY NAME otros_mov.num_doc
LET otros_mov.fecha = TODAY
DISPLAY BY NAME otros_mov.fecha
AFTER FIELD cod_mov
LET pcontrol_cliente = NULL
LET Pcontrol_transferencia = NULL
SELECT a.status_mov,a.control_clientes,a.control_despacho,a.control_devolucion,
a.control_transferencia,a.control_departamento
INTO status_m,pcontrol_cliente,pcontrol_despacho,control_devolucion,
Pcontrol_transferencia,pcontrol_departamento
FROM iptb00005 a WHERE a.cod_mov = otros_mov.cod_mov AND a.status_t is null
IF status >= 0 THEN
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_mov
END IF
ELSE
CALL integridad()
if bandera = 1 THEN
LET bandera = 0
RETURN
end if
END IF
IF pcontrol_transferencia = 'SI' THEN
LET k1 = '2'
ELSE
LET k1 = '1'
END IF
CALL bodegas(k1)
SELECT num_doc INTO otros_mov.num_doc FROM iptb00007
WHERE cod_mov = otros_mov.cod_mov AND
bodega = otros_mov.bodega
IF otros_mov.num_Doc IS NULL THEN
LET otros_mov.num_doc = 1
END IF
LET otros_mov.num_Doc = otros_mov.num_doc + 1
DISPLAY BY NAME otros_mov.num_doc
DISPLAY BY NAME otros_mov.bodega
--C0NTROL DESPACHO
LET pnum_req = NULL
IF pcontrol_despacho = "SI" THEN
CALL visualizacion_despacho() RETURNING otros_mov.conduce_no,
otros_mov.cod_sp,
otros_mov.cod_sp_sec,
pnum_req
IF Int_flag THEN
LET int_flag = FALSE
CALL msg(2)
DELETE FROM iptbexistencia WHERE us_crea = usuarios
RETURN
END IF
END IF
{ CHEQUEO DE PERMISOS PARA EL USUARIO
SELECT * FROM iptb00005 where cod_mov = otros_mov.cod_mov and
us_crea = user
IF status = notfound THEN
LET numero_msg = 139
CALL msg(numero_msg)
NEXT FIELD cod_mov
END IF
} IF otros_mov.cod_mov = 35 OR otros_mov.cod_mov = 10 THEN
CALL fgl_winmessage("INFO","NO PUEDES EMITIR ESTE TIPO DE DOCUMENTO EN ESTE PROGRAMA","INFO")
NEXT FIELD cod_mov
END IF
IF otros_mov.cod_mov = 32 or
otros_mov.cod_mov = 12
THEN
NEXT FIELD num_doc_ret
ELSE
NEXT FIELD cod_transp
END IF
AFTER FIELD bodega
IF otros_mov.bodega IS NULL THEN
CALL msg(16)
NEXT FIELD bodega
END IF
SELECT UNIQUE a.usuario FROM iptb00048 a
WHERE a.bodega = otros_mov.bodega AND a.usuario = usuarios
IF STATUS = NOTFOUND THEN
CALL fgl_winmessage("ERROR","USTED NO TIENE PERMISOS PARA UTILIZAR BODEGA","INFO")
NEXT FIELD bodega
END IF
AFTER FIELD cod_mov1
IF otros_mov.entrada IS NOT NULL THEN
IF otros_mov.cod_mov IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD entrada
END IF
SELECT a.descrip_mov INTO otros_mov.descrip_mov1 FROM iptb00005 a
WHERE a.cod_mov = otros_mov.cod_mov1
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_mov1
END IF
DISPLAY BY NAME otros_mov.descrip_mov1
END IF
BEFORE FIELD conduce_no
IF pcontrol_despacho = "SI" THEN
IF otros_mov.bodega IS NULL THEN
LET otros_mov.bodega = 1
DISPLAY BY NAME otros_mov.bodega
END IF
SELECT UNIQUE a.cod_mov
FROM vetb00060 a
WHERE a.tipo_cliente = otros_mov.cod_sp and
a.cod_mov = otros_mov.cod_mov
IF STATUS = NOTFOUND THEN
LET numero_msg = 386
CALL msg(numero_msg)
NEXT FIELD cod_mov
END IF
SELECT nombre INTO otros_mov.descrip4
FROM vetb00004
WHERE tipo_cliente = otros_mov.cod_sp and
sec_cliente = otros_mov.cod_sp_sec
DISPLAY BY NAME otros_mov.cod_sp,otros_mov.cod_sp_Sec,
otros_mov.descrip4
NEXT FIELD detalle
END IF
AFTER FIELD conduce_no
LET ordenx = NULL
LET pnum_req=null
IF otros_mov.conduce_no IS NOT NULL THEN
LET ordenx = otros_mov.conduce_no
SELECT a.tipo_cliente,a.sec_cliente,a.cerrada,a.cotizacion_no
INTO otros_mov.cod_sp,otros_mov.cod_sp_sec,pcerrada,xcotizacion
FROM prtb00012 a
WHERE a.num_oc = ordenx AND
a.status_t IS NULL
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD conduce_no
END IF
SELECT nombre INTO otros_mov.descrip4
FROM vetb00004
WHERE tipo_cliente = otros_mov.cod_sp and
sec_cliente = otros_mov.cod_sp_sec
DISPLAY BY NAME otros_mov.cod_sp,otros_mov.cod_sp_Sec,
otros_mov.descrip4
IF otros_mov.cod_mov <> 12 AND otros_mov.cod_mov <> 13 AND otros_mov.cod_mov <> 71 THEN
IF pcerrada = "S" THEN
LET numero_msg = 74
CALL msg(numero_msg)
NEXT FIELD conduce_no
END IF
END IF
DISPLAY BY NAME otros_mov.cod_sp,otros_mov.cod_sp_sec
END IF
IF otros_mov.cod_mov = 30 OR otros_mov.conduce_no = 31 OR otros_mov.cod_mov = 55
THEN
IF otros_mov.conduce_no IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD conduce_no
END IF
END IF
NEXT FIELD detalle
BEFORE FIELD cod_sp
IF otros_mov.cod_mov = 33 OR otros_mov.cod_mov = 34 THEN
CALL busca_vend()
LET otros_mov.cod_sp = 12
LET otros_mov.cod_sp_sec= busca_v.sec_cliente
LET otros_mov.descrip4 = busca_v.nombre
DISPLAY BY NAME otros_mov.cod_sp,otros_mov.cod_sp_sec,otros_mov.descrip4
NEXT FIELD cod_sp_sec
END IF
AFTER FIELD cod_sp
IF ac_cli = "S" AND otros_mov.cod_sp IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_sp
END IF
IF pcontrol_cliente = "SI" THEN
SELECT a.cod_mov FROM vetb00060 a
WHERE a.cod_mov = otros_mov.cod_mov and
a.tipo_cliente = otros_mov.cod_sp
IF STATUS = NOTFOUND THEN
CALL msg(240)
NEXT FIELD cod_sp
END IF
END IF
AFTER FIELD cod_sp_sec
IF ac_cli = "S" AND otros_mov.cod_sp_sec IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_sp
END IF
IF otros_mov.cod_mov = 12 THEN
IF otros_mov.cod_sp_sec is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_sp
END IF
END IF
IF otros_mov.cod_sp_sec is not null THEN
SELECT a.nombre,b.sec_vend INTO otros_mov.descrip4,psec_vend
FROM vetb00004 a,vetb00028 b
WHERE a.tipo_cliente = otros_mov.cod_sp and
a.sec_cliente = otros_mov.cod_sp_sec and
a.tipo_cliente = b.tipo_cliente and
a.sec_cliente = b.sec_cliente
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_sp
END IF
DISPLAY BY NAME otros_mov.descrip4,psec_vend
IF otros_mov.fact_no is not null THEN
SELECT sec_cliente FROM vetb00002
WHERE factura = otros_mov.fact_no and
sec_cliente = otros_mov.cod_sp_sec
IF status = notfound THEN
LET numero_msg = 237
CALL msg(numero_msg)
NEXT FIELD cod_sp_sec
END IF
END IF
END IF
IF otros_mov.cod_mov = 33 OR otros_mov.cod_mov = 34 THEN
SELECT UNIQUE sec_cliente FROM vetb00033
WHERE sec_cliente = otros_mov.cod_sp_sec
IF STATUS = NOTFOUND THEN
LET numero_msg = -1301
CALL msg(numero_msg)
NEXT FIELD cod_sp
END IF
END IF
BEFORE FIELD entrada
IF otros_mov.cod_mov = 30 OR otros_mov.cod_mov = 31 OR otros_mov.cod_mov = 55 THEN
IF otros_mov.entrada IS NULL THEN
# IF otros_mov.entrada IS NOT NULL THEN
SELECT MAX(a.num_doc),MAX(a.cod_mov) INTO otros_mov.entrada,otros_mov.cod_mov1
FROM iptb00006 a
WHERE (a.conduce_no = otros_mov.conduce_no) AND
(a.cod_mov in (70,71,72)) AND a.status_t IS NULL
# END IF
DISPLAY BY NAME otros_mov.entrada,otros_mov.cod_mov1
END IF
END IF
AFTER FIELD entrada
IF otros_mov.entrada IS NOT NULL THEN
SELECT UNIQUE a.num_doc FROM iptb00006 a
WHERE a.cod_mov= otros_mov.cod_mov1 and a.num_doc = otros_mov.entrada
AND a.status_t IS NULL
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD entrada
END IF
{
LET cantidad_entrada = 0
SELECT SUM(a.cantidad_2) INTO cantidad_entrada
FROM iptb00006 a
WHERE a.num_doc = otros_mov.placa AND
a.cod_mov IN(70,71,72) AND
a.status_t IS NULL
IF cantidad_entrada IS NULL THEN
LET cantidad_entrada = 0
END IF
LET cantidad_conduce = 0
SELECT SUM(a.cantidad_2) INTO cantidad_conduce
FROM iptb00006 a,iptb00028 b
WHERE b.entrada = otros_mov.entrada AND
a.num_doc = b.num_doc and
a.cod_mov = b.cod_mov AND
a.status_t IS NULL
IF cantidad_conduce IS NULL THEN
LET cantidad_conduce = 0
END IF
LET pendiente = cantidad_entrada + cantidad_conduce
DISPLAY "CANTIDAD E ",cantidad_entrada," c salida ",cantidad_conduce
IF pendiente <= 0 THEN
LET numero_msg =46
CALL msg(numero_msg)
NEXT FIELD entrada
END IF
}
END IF
AFTER FIELD departamento
IF pcontrol_departamento = "SI" THEN
IF otros_mov.departamento IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD departamento
END IF
SELECT a.nom_dpto INTO otros_mov.nombre_depto
FROM adtb00001 a
WHERE a.departamento = otros_mov.departamento AND
a.status_t IS NULL
IF STATUS = NOTFOUND THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD departamento
END IF
DISPLAY BY NAME otros_mov.nombre_depto,otros_mov.cod_sp,otros_mov.cod_sp_sec
END IF
AFTER INPUT
IF INT_FLAG THEN
CALL msg(2)
LET INT_FLAG=FALSE
RETURN
END IF
IF pcontrol_cliente = "SI" THEN
SELECT a.cod_mov FROM vetb00060 a
WHERE a.cod_mov = otros_mov.cod_mov and
a.tipo_cliente = otros_mov.cod_sp
IF STATUS = NOTFOUND THEN
CALL msg(240)
NEXT FIELD cod_sp
END IF
END IF
IF otros_mov.bodega IS NULL THEN
CALL msg(16)
NEXT FIELD bodega
END IF
IF otros_mov.cod_mov = 12 OR otros_mov.cod_mov=13 THEN
IF aplica_dev IS NULL THEN
NEXT FIELD aplica_dev
END IF
END IF
IF Pcontrol_transferencia = 'SI' THEN
IF otros_mov.bodega_destino IS NULL THEN
CALL msg(16)
NEXT FIELD bodega_destino
END IF
END IF
IF otros_mov.bodega IS NULL THEN
CALL msg(16)
NEXT FIELD bodega
END IF
SELECT UNIQUE a.usuario FROM iptb00048 a
WHERE a.bodega = otros_mov.bodega AND a.usuario = usuarios
IF STATUS = NOTFOUND THEN
CALL fgl_winmessage("ERROR","USTED NO TIENE PERMISOS PARA UTILIZAR BODEGA","INFO")
NEXT FIELD bodega
END IF
IF otros_mov.conduce_no IS NOT NULL THEN
LET ordenx = otros_mov.conduce_no
SELECT a.tipo_cliente,a.sec_cliente,a.cerrada,a.cotizacion_no,a.sec_vend
INTO otros_mov.cod_sp,otros_mov.cod_sp_sec,pcerrada,xcotizacion,psec_vend
FROM prtb00012 a
WHERE a.num_oc = otros_mov.conduce_no AND
a.status_t IS NULL
SELECT a.nombre,b.sec_vend INTO otros_mov.descrip4
FROM vetb00004 a,vetb00028 b
WHERE a.tipo_cliente = otros_mov.cod_sp and
a.sec_cliente = otros_mov.cod_sp_sec and
a.tipo_cliente = b.tipo_cliente and
a.sec_cliente = b.sec_cliente
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_sp
END IF
SELECT a.mensaje INTO direccion_p FROM cctb00029 a
WHERE a.num_req = pnum_req
DISPLAY BY NAME otros_mov.conduce_no,otros_mov.cod_sp,otros_mov.cod_sp_Sec,
pnum_req,direccion_p,psec_vend,xcotizacion,otros_mov.descrip4,psec_Vend
END IF
IF opc = "YES" OR opc IS NULL THEN
CALL movi2.clear()
END IF
LET chconduce = 'N'
IF otros_mov.conduce_no IS NOT NULL AND (otros_mov.cod_mov = 70 OR otros_mov.cod_mov = 71 OR
otros_mov.cod_mov = 72) THEN
DECLARE busca_orden CURSOR FOR
SELECT a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,'0','0',a.cantidad,b.unidad_med,b.descrip_esp
FROM prtb00013 a,iptb00002 b
WHERE a.num_oc =ordenx AND
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
LET idx = 1
FOREACH busca_orden INTO movi2[idx].*
LET idx = idx + 1
END FOREACH
END IF
IF otros_mov.entrada IS NOT NULL THEN
DECLARE busca_20 CURSOR FOR
SELECT a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,'0','0',a.cantidad_2,b.unidad_med,b.descrip_esp
FROM iptb00006 a,iptb00002 b
WHERE a.conduce_no =ordenx AND
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.cod_mov = otros_mov.cod_mov1 and a.num_doc = otros_mov.entrada AND
a.status_t IS NULL
LET idx = 1
FOREACH busca_20 INTO movi2[idx].*
LET idx = idx + 1
END FOREACH
END IF
LET chconduce = 'N'
IF otros_mov.conduce_no IS NOT NULL AND (otros_mov.cod_mov = 30 OR otros_mov.cod_mov = 31 OR
otros_mov.cod_mov = 55) THEN
LET chconduce = 'S'
IF otros_mov.entrada IS NOT NULL THEN
DECLARE busca_entrada CURSOR FOR
SELECT c.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,c.cantidad_1,
c.cantidad,c.cantidad*-1,b.unidad_med,b.descrip_esp,a.codigo_bloque,c.id_kit
FROM iptb00006 a,iptb00002 b,cctb00026 c
WHERE a.conduce_no = ordenx and a.status_t IS NULL AND
a.num_Doc = otros_mov.entrada AND
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.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
a.area = c.area AND
c.num_req = pnum_req
LET idx = 1
FOREACH busca_entrada INTO movi2[idx].*
LET idx = idx + 1
END FOREACH
END IF
IF otros_mov.entrada IS NULL THEN
DECLARE busca_orden1 CURSOR FOR
SELECT UNIQUE a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,
c.cantidad_1,c.cantidad,c.cantidad,b.unidad_med,b.descrip_esp,
' ',c.id_kit
FROM prtb00013 a,iptb00002 b,cctb00026 c
WHERE a.num_oc = ordenx and
a.status_t IS NULL and
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.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
a.area = c.area AND
c.num_req = pnum_req
LET idx = 1
FOREACH busca_orden1 INTO movi2[idx].*
LET idx = idx + 1
END FOREACH
END IF
END IF
IF otros_mov.cod_mov = 12 OR otros_mov.cod_mov = 13 THEN
IF otros_mov.conduce_no IS NULL THEN
CALL fgl_winmessage("ERROR","DEBES DIGITAR NUMERO DE ORDEN DE PEDIDOS","INFO")
NEXT FIELD conduce_no
END IF
IF num_doc_ret IS NULL THEN
IF otros_mov.fact_no IS NULL THEN
CALL fgl_winmessage("ERROR","FACTURA ESTA EN BLANCO, FAVOR DE COLOCAR NUMERO DE FACTURA","INFO")
NEXT FIELD fact_no
END IF
LET selec = "SELECT a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.cantidad,a.cantidad,a.cantidad,b.unidad_med,b.descrip_esp
FROM vetb00003 a,iptb00002 b
WHERE (a.factura = ", otros_mov.fact_no,"
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.status_t IS NULL "
ELSE
LET selec = "SELECT a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.cantidad,a.cantidad,a.cantidad,b.unidad_med,b.descrip_esp
FROM svtb00008 a,iptb00002 b
WHERE a.num_doc = ",num_doc_ret," and a.status_t IS NULL and
(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)"
END IF
PREPARE devoluciones FROM selec
DECLARE busca_dev CURSOR FOR devoluciones
LET idx = 1
FOREACH busca_dev INTO movi2[idx].*
LET idx = idx + 1
END FOREACH
END IF
END INPUT
INPUT ARRAY movi2 FROM s_movi1.* ATTRIBUTE(WITHOUT DEFAULTS)
BEFORE INPUT
LET decide = NULL
LET selec_pt = NULL
LET hacerdocumento = TRUE
# Este BEFORE FIELD estaba en comentario por disposicion de alguien hace algun
# tiempo y ahora no se sabe porque se determino que cuando usted hace una
# devolucion le permita al usuario modificar el codigo del producto
# Hoy 13 de noviembre de 1993 el Ing. de informatica dispuso que
# cuando sea una devolucion a una factura no se permitiera la actualizacion
# del codigo del producto
ON ACTION ordenDisponible
IF movi2[p_act].cod_Sec IS NOT NULL THEN
CALL busca_ordenes_reservadas(movi2[p_act].cod_n,movi2[p_act].cod_grupo,movi2[p_act].cod_tipo,movi2[p_act].cod_Sec)
END IF
BEFORE ROW
LET p_act = arr_curr()
LET scr_l = scr_line()
IF otros_mov.cod_mov = 12 OR otros_mov.cod_mov = 13 THEN
NEXT FIELD cantidad_1
END IF
ON ACTION despiece
LET p_act = arr_curr()
LET scr_l = scr_line()
SELECT UNIQUE a.cod_n FROM iptb00027 a
WHERE a.cod_n = movi2[p_act].cod_n AND
a.cod_grupo = movi2[p_act].cod_grupo AND
a.cod_tipo = movi2[p_act].cod_tipo AND
a.cod_sec = movi2[p_act].cod_sec
IF STATUS = NOTFOUND THEN
LET numero_msg =399
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
IF movi2[p_act].area IS NULL THEN
LET movi2[p_act].area = 1
# DISPLAY movi2[p_act].area TO smovi1[scr_l].area
END IF
CALL despiece()
# DISPLAY movi2[p_act].cantidad_1 TO smovi1[scr_l].cantidad_1
NEXT FIELD cantidad_1
ON ACTION producto
CASE
WHEN INFIELD (cod_n)
CALL busca_prod1()
LET movi2[p_act].cod_n = busca_p.cod_n
LET movi2[p_act].cod_grupo = busca_p.cod_grupo
LET movi2[p_act].cod_tipo = busca_p.cod_tipo
LET movi2[p_act].cod_sec = busca_p.cod_sec
LET movi2[p_act].descrip_esp= busca_p.descrip_esp
LET movi2[p_act].unidad_med = busca_p.unidad_med
DISPLAY movi2[p_act].cod_n, movi2[p_act].cod_grupo,
movi2[p_act].cod_tipo,movi2[p_act].cod_sec,
movi2[p_act].descrip_esp,movi2[p_act].unidad_med
TO s_movi1[scr_l].cod_n, s_movi1[scr_l].cod_grupo,
s_movi1[scr_l].cod_tipo,s_movi1[scr_l].cod_sec,
s_movi1[scr_l].descrip_esp,s_movi1[scr_l].unidad_med
WHEN INFIELD (cod_grupo)
CALL busca_prod1()
LET movi2[p_act].cod_n = busca_p.cod_n
LET movi2[p_act].cod_grupo = busca_p.cod_grupo
LET movi2[p_act].cod_tipo = busca_p.cod_tipo
LET movi2[p_act].cod_sec = busca_p.cod_sec
LET movi2[p_act].descrip_esp= busca_p.descrip_esp
LET movi2[p_act].unidad_med = busca_p.unidad_med
DISPLAY movi2[p_act].cod_n, movi2[p_act].cod_grupo,
movi2[p_act].cod_tipo,movi2[p_act].cod_sec,
movi2[p_act].descrip_esp,movi2[p_act].unidad_med
TO s_movi1[scr_l].cod_n, s_movi1[scr_l].cod_grupo,
s_movi1[scr_l].cod_tipo,s_movi1[scr_l].cod_sec,
s_movi1[scr_l].descrip_esp,s_movi1[scr_l].unidad_med
WHEN INFIELD (cod_tipo)
CALL busca_prod1()
LET movi2[p_act].cod_n = busca_p.cod_n
LET movi2[p_act].cod_grupo = busca_p.cod_grupo
LET movi2[p_act].cod_tipo = busca_p.cod_tipo
LET movi2[p_act].cod_sec = busca_p.cod_sec
LET movi2[p_act].descrip_esp= busca_p.descrip_esp
LET movi2[p_act].unidad_med = busca_p.unidad_med
DISPLAY movi2[p_act].cod_n, movi2[p_act].cod_grupo,
movi2[p_act].cod_tipo,movi2[p_act].cod_sec,
movi2[p_act].descrip_esp,movi2[p_act].unidad_med
TO s_movi1[scr_l].cod_n, s_movi1[scr_l].cod_grupo,
s_movi1[scr_l].cod_tipo,s_movi1[scr_l].cod_sec,
s_movi1[scr_l].descrip_esp,s_movi1[scr_l].unidad_med
WHEN INFIELD (cod_sec)
CALL busca_prod1()
LET movi2[p_act].cod_n = busca_p.cod_n
LET movi2[p_act].cod_grupo = busca_p.cod_grupo
LET movi2[p_act].cod_tipo = busca_p.cod_tipo
LET movi2[p_act].cod_sec = busca_p.cod_sec
LET movi2[p_act].descrip_esp= busca_p.descrip_esp
LET movi2[p_act].unidad_med = busca_p.unidad_med
DISPLAY movi2[p_act].cod_n, movi2[p_act].cod_grupo,
movi2[p_act].cod_tipo,movi2[p_act].cod_sec,
movi2[p_act].descrip_esp,movi2[p_act].unidad_med
TO s_movi1[scr_l].cod_n, s_movi1[scr_l].cod_grupo,
s_movi1[scr_l].cod_tipo,s_movi1[scr_l].cod_sec,
s_movi1[scr_l].descrip_esp,s_movi1[scr_l].unidad_med
END CASE
CALL integridad()
if bandera = 1 THEN
LET bandera = 0
RETURN
end IF
AFTER FIELD codigo_bloque
IF LENGTH(movi2[p_act].codigo_bloque) > 2 THEN
SELECT UNIQUE a.codigo_bloque FROM intb00018 a
WHERE a.codigo_bloque = movi2[p_act].codigo_bloque
IF STATUS = NOTFOUND THEN
CALL msg(3)
NEXT FIELD codigo_bloque
END IF
END IF
AFTER FIELD cod_n
LET p_act = arr_curr()
IF movi2[p_act].cod_n is not null then
LET ant_art.area = movi2[p_act].area
LET ant_art.cod_n = movi2[p_act].cod_n
LET ant_art.cod_grupo = movi2[p_act].cod_grupo
LET ant_art.cod_tipo = movi2[p_act].cod_tipo
LET ant_art.cod_sec = movi2[p_act].cod_sec
FOR idx = 1 TO arr_count()
IF idx != p_act THEN
IF movi2[idx].area = ant_art.area AND
movi2[idx].cod_n = ant_art.cod_n AND
movi2[idx].cod_grupo = ant_art.cod_grupo AND
movi2[idx].cod_tipo = ant_art.cod_tipo AND
movi2[idx].cod_sec = ant_art.cod_sec THEN
LET numero_msg = 21
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
END IF
END FOR
END IF
AFTER FIELD cod_grupo
LET p_act = arr_curr()
IF movi2[p_act].cod_grupo is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
LET ant_art.area = movi2[p_act].area
LET ant_art.cod_n = movi2[p_act].cod_n
LET ant_art.cod_grupo = movi2[p_act].cod_grupo
LET ant_art.cod_tipo = movi2[p_act].cod_tipo
LET ant_art.cod_sec = movi2[p_act].cod_sec
FOR idx = 1 TO arr_count()
IF idx != p_act THEN
IF movi2[idx].area = ant_art.area AND
movi2[idx].cod_n = ant_art.cod_n AND
movi2[idx].cod_grupo = ant_art.cod_grupo AND
movi2[idx].cod_tipo = ant_art.cod_tipo AND
movi2[idx].cod_sec = ant_art.cod_sec THEN
LET numero_msg = 21
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
END IF
END FOR
AFTER FIELD cod_tipo
LET p_act = arr_curr()
IF movi2[p_act].cod_tipo is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
LET ant_art.area = movi2[p_act].area
LET ant_art.cod_n = movi2[p_act].cod_n
LET ant_art.cod_grupo = movi2[p_act].cod_grupo
LET ant_art.cod_tipo = movi2[p_act].cod_tipo
LET ant_art.cod_sec = movi2[p_act].cod_sec
FOR idx = 1 TO arr_count()
IF idx != p_act THEN
IF movi2[idx].area = ant_art.area AND
movi2[idx].cod_n = ant_art.cod_n AND
movi2[idx].cod_grupo = ant_art.cod_grupo AND
movi2[idx].cod_tipo = ant_art.cod_tipo AND
movi2[idx].cod_sec = ant_art.cod_sec THEN
LET numero_msg = 21
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
END IF
END FOR
AFTER FIELD cod_sec
LET p_act = arr_curr()
IF movi2[p_act].cod_sec is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
IF movi2[p_act].cod_n is null AND movi2[p_act].cod_sec is not null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
IF movi2[p_act].cod_n is not null and movi2[p_act].cod_grupo is not null and
movi2[p_act].cod_tipo is not null and movi2[p_act].cod_sec is not null then
SELECT a.descrip_esp,a.unidad_med,a.control_existencia
INTO p_iptb02.descrip_esp,p_iptb02.unidad_med,p_iptb02.control_existencia
FROM iptb00002 a
WHERE a.cod_n=movi2[p_act].cod_n and
a.cod_grupo = movi2[p_act].cod_grupo and
a.cod_tipo=movi2[p_act].cod_tipo and
a.cod_sec = movi2[p_act].cod_sec and
a.status_t is null
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
SELECT UNIQUE a.factor_conv INTO factor_conv[p_act] FROM iptb00001 a
WHERE a.cod_n=movi2[p_act].cod_n and a.cod_grupo=movi2[p_act].cod_grupo
and a.cod_tipo=movi2[p_act].cod_tipo and a.cod_sec=movi2[p_act].cod_sec
and a.status_t IS NULL
IF STATUS = NOTFOUND THEN
CALL msg(94)
NEXT FIELD cod_n
END IF
LET movi2[p_act].descrip_esp = p_iptb02.descrip_esp CLIPPED
LET movi2[p_act].unidad_med = p_iptb02.unidad_med CLIPPED
DISPLAY movi2[p_act].descrip_esp TO s_movi1[scr_l].descrip_esp
ATTRIBUTE(CYAN)
DISPLAY movi2[p_act].unidad_med TO s_movi1[scr_l].unidad_med
ATTRIBUTE(CYAN)
LET ant_art.area = movi2[p_act].area
LET ant_art.cod_n = movi2[p_act].cod_n
LET ant_art.cod_grupo = movi2[p_act].cod_grupo
LET ant_art.cod_tipo = movi2[p_act].cod_tipo
LET ant_art.cod_sec = movi2[p_act].cod_sec
FOR idx = 1 TO arr_count()
IF idx != p_act THEN
IF movi2[idx].area = ant_art.area AND
movi2[idx].cod_n = ant_art.cod_n AND
movi2[idx].cod_grupo = ant_art.cod_grupo AND
movi2[idx].cod_tipo = ant_art.cod_tipo AND
movi2[idx].cod_sec = ant_art.cod_sec THEN
LET numero_msg = 21
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
END IF
END FOR
# CONTROL ITEMS EN LA ORDEN
IF otros_mov.conduce_no IS NOT NULL THEN
SELECT UNIQUE a.cod_n FROM prtb00013 a
WHERE a.cod_n = movi2[p_act].cod_n AND
a.cod_grupo = movi2[p_act].cod_grupo AND
a.cod_tipo = movi2[p_act].cod_tipo AND
a.cod_sec = movi2[p_act].cod_sec AND
a.num_oc = ordenx
IF STATUS = NOTFOUND THEN
LET numero_msg =397
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
END IF
IF pnum_req IS NOT NULL THEN
# CONTROL ITEM EN LA REQUISICION
LET hacerdocumento=TRUE
SELECT UNIQUE a.cod_n FROM cctb00026 a
WHERE a.cod_n = movi2[p_act].cod_n AND
a.cod_grupo = movi2[p_act].cod_grupo AND
a.cod_tipo = movi2[p_act].cod_tipo AND
a.cod_sec = movi2[p_act].cod_sec AND
a.num_oc = otros_mov.conduce_no AND
a.num_req = pnum_req
IF STATUS = NOTFOUND THEN
LET numero_msg =397
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
END IF
# CONTROL DESPIECE
SELECT UNIQUE a.cod_n FROM iptb00027 a
WHERE a.cod_n = movi2[p_act].cod_n AND
a.cod_grupo = movi2[p_act].cod_grupo AND
a.cod_tipo = movi2[p_act].cod_tipo AND
a.cod_sec = movi2[p_act].cod_sec
IF STATUS != NOTFOUND THEN
SELECT UNIQUE a.cod_n FROM iptb00025 a
WHERE a.cod_n = movi2[p_act].cod_n AND
a.cod_grupo = movi2[p_act].cod_grupo AND
a.cod_tipo = movi2[p_act].cod_tipo AND
a.cod_sec = movi2[p_act].cod_sec AND
a.cod_mov = otros_mov.cod_mov AND
a.num_doc = otros_mov.num_Doc
IF STATUS = NOTFOUND THEN
LET numero_msg =398
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
END IF
LET movi2[p_act].cantidad_p = cantidad_conduce - cantidad_orden
#CONTROL DEVOLUCION
IF otros_mov.cod_mov = 12 OR otros_mov.cod_mov = 13 THEN
IF movi2[p_Act].cantidad_2 > movi2[p_Act].cantidad_p then
LET numero_msg =28
CALL msg(numero_msg)
NEXT FIELD cantidad_1
end if
DISPLAY movi2[p_Act].cantidad_2 TO s_movi1[scr_l].cantidad_2
END IF
END IF # CONTROL CODIGO EN BLANCO
AFTER FIELD cantidad_1
LET p_act = arr_curr()
IF movi2[p_act].cod_n is not null and movi2[p_act].cod_grupo is not null and
movi2[p_act].cod_tipo is not null and movi2[p_act].cod_sec is not null
THEN
IF movi2[p_act].cantidad_1 IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cantidad_1
END IF
SELECT UNIQUE a.factor_conv INTO factor_conv[p_act] FROM iptb00001 a
WHERE a.cod_n=movi2[p_act].cod_n and a.cod_grupo=movi2[p_act].cod_grupo
and a.cod_tipo=movi2[p_act].cod_tipo and a.cod_sec=movi2[p_act].cod_sec
and a.status_t IS NULL
IF STATUS = NOTFOUND THEN
CALL msg(94)
NEXT FIELD cod_n
END IF
LET movi2[p_act].cantidad_2=movi2[p_act].cantidad_1*factor_conv[p_act]
DISPLAY movi2[p_act].cantidad_2 TO s_movi1[scr_l].cantidad_2
LET p_iptb06.cantidad_2 = 0
#CONTROL DEVOLUCION
IF otros_mov.cod_mov = 12 OR otros_mov.cod_mov = 13 THEN
LET cantidad_factura = 0
SELECT SUM(a.cantidad) INTO cantidad_factura
FROM vetb00003 a
WHERE a.factura = otros_mov.fact_no AND
a.status_t IS NULL AND
a.fech_crea > '2009-01-01 08:00' and
a.cod_n=movi2[p_act].cod_n and a.cod_grupo=movi2[p_act].cod_grupo
and a.cod_tipo=movi2[p_act].cod_tipo and a.cod_sec=movi2[p_act].cod_sec
and a.status_t is null
SELECT SUM(a.cantidad_2) INTO cantidad_devuelta
FROM iptb00006 a
WHERE a.fact_no = otros_mov.fact_no AND
a.status_t IS NULL AND
a.fech_crea > '2009-01-01 08:00' and
a.cod_n=movi2[p_act].cod_n and a.cod_grupo=movi2[p_act].cod_grupo
and a.cod_tipo=movi2[p_act].cod_tipo and a.cod_sec=movi2[p_act].cod_sec and
a.cod_mov in (12,13)
IF cantidad_devuelta+movi2[p_act].cantidad_2 > cantidad_factura THEN
LET hacerdocumento = FALSE
LET numero_msg =238
CALL msg(numero_msg)
NEXT FIELD cantidad_1
END IF
END IF
# BUSCA LA EXISTENCIA
IF status_m = "2" THEN
LET hacerdocumento=TRUE
IF p_iptb02.control_existencia = "SI" THEN
CALL existencia(movi2[p_act].cod_n,movi2[p_act].cod_grupo,
movi2[p_act].cod_tipo,movi2[p_act].cod_sec,movi2[p_act].cantidad_2,p_act,otros_mov.bodega)
RETURNING vexistencia
IF vexistencia THEN
CALL fgl_winmessage("ERROR","CANTIDAD EXCEDE EXISTENCIA","STOP")
NEXT FIELD cod_n
END IF
CALL disponibles(movi2[p_act].cod_n,movi2[p_act].cod_grupo,
movi2[p_act].cod_tipo,movi2[p_act].cod_sec,today)
RETURNING cantidad_orden1,pcantidadConduce,transito,existencia,reservado
LET cantidad_orden1 = cantidad_orden1+pcantidadConduce
LET movi2[p_act].existencia=existencia
LET existencia=existencia-cantidad_orden1
LET movi2[p_act].disponible=existencia
DISPLAY movi2[p_act].existencia TO s_movi1[scr_l].existencia
DISPLAY movi2[p_act].disponible TO s_movi1[scr_l].disponible
IF movi2[p_act].cantidad_2 > existencia THEN
CALL fgl_winmessage("info","CANTIDAD EXCEDE DISPONIBLE","INFO")
END IF
END IF
END IF
#================================================================================
# CONTROL CANTIDAD DESPIECE
LET total_medida = 0
IF otros_mov.cod_mov = 30 OR otros_mov.cod_mov = 31 OR
otros_mov.cod_mov = 55 OR otros_mov.cod_mov = 70 OR otros_mov.cod_mov = 71 OR
otros_mov.cod_mov = 72 THEN
# CONTROL DESPIECE
SELECT UNIQUE a.cod_n FROM iptb00027 a
WHERE a.cod_n = movi2[p_act].cod_n AND
a.cod_grupo = movi2[p_act].cod_grupo AND
a.cod_tipo = movi2[p_act].cod_tipo AND
a.cod_sec = movi2[p_act].cod_sec
IF STATUS != NOTFOUND THEN
SELECT UNIQUE a.cod_n FROM iptb00025 a
WHERE a.cod_n = movi2[p_act].cod_n AND
a.cod_grupo = movi2[p_act].cod_grupo AND
a.cod_tipo = movi2[p_act].cod_tipo AND
a.cod_sec = movi2[p_act].cod_sec AND
a.cod_mov = otros_mov.cod_mov AND
a.num_doc = otros_mov.num_Doc
IF STATUS = NOTFOUND THEN
LET numero_msg =398
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
END IF
SELECT UNIQUE a.num_doc
FROM iptb00025 a
WHERE a.cod_n = movi2[p_act].cod_n AND
a.cod_grupo = movi2[p_act].cod_grupo AND
a.cod_tipo = movi2[p_act].cod_tipo AND
a.cod_sec = movi2[p_act].cod_sec AND
a.cod_mov = otros_mov.cod_mov AND
a.num_doc = otros_mov.num_doc
IF STATUS != NOTFOUND THEN
SELECT SUM(a.medida) INTO total_medida
FROM iptb00025 a
WHERE a.cod_n = movi2[p_act].cod_n AND
a.cod_grupo = movi2[p_act].cod_grupo AND
a.cod_tipo = movi2[p_act].cod_tipo AND
a.cod_sec = movi2[p_act].cod_sec AND
a.cod_mov = otros_mov.cod_mov AND
a.area = movi2[p_act].area AND
a.num_doc = otros_mov.num_doc
IF total_medida <> movi2[p_act].cantidad_1 THEN
LET numero_msg = 152
CALL msg(numero_msg)
NEXT FIELD cantidad_1
END IF
END IF
LET selec_pt = selec_pt CLIPPED,movi2[p_act].descrip_esp," CANTIDAD ",
movi2[p_act].cantidad_2," ",movi2[p_act].unidad_med
END IF
IF otros_mov.conduce_no IS NOT NULL THEN
# CONTROL ORDEN
IF otros_mov.cod_mov = 71 OR otros_mov.cod_mov = 70 THEN
LET cantidad_conduce = 0
SELECT SUM(a.cantidad) INTO cantidad_conduce
FROM prtb00013 a
WHERE a.cod_n = movi2[p_act].cod_n AND
a.cod_grupo = movi2[p_act].cod_grupo AND
a.cod_tipo = movi2[p_act].cod_tipo AND
a.cod_sec = movi2[p_act].cod_sec AND
a.num_oc = otros_mov.conduce_no AND
a.status_t IS NULL
IF cantidad_conduce IS NULL THEN
LET cantidad_conduce = 0
END IF
LET cantidad_recibida = 0
SELECT SUM(a.cantidad_2) INTO cantidad_recibida
FROM iptb00006 a
WHERE a.cod_n = movi2[p_act].cod_n AND
a.cod_grupo = movi2[p_act].cod_grupo AND
a.cod_tipo = movi2[p_act].cod_tipo AND
a.cod_sec = movi2[p_act].cod_sec AND
a.conduce_no = otros_mov.conduce_no AND
a.cod_mov in(20,70,72,71) AND
a.status_t IS NULL
IF cantidad_Recibida IS NULL THEN
LET cantidad_Recibida = 0
END IF
LET hacerdocumento=TRUE
IF (cantidad_Recibida + movi2[p_act].cantidad_2) > cantidad_conduce THEN
LET numero_msg = 46
LET hacerdocumento = FALSE
CALL msg(numero_msg)
NEXT FIELD cantidad_1
END IF
END IF
END IF # CONTROL DEVOLUCION
# CONTROL REQUISICION
IF control_devolucion <>"SI" THEN
IF pnum_req IS NOT NULL THEN
CALL control_requisicion(movi2[p_act].cantidad_2,movi2[p_act].cod_n,
movi2[p_act].cod_grupo,movi2[p_act].cod_tipo,
movi2[p_act].cod_sec,movi2[p_act].id_kit) RETURNING hacerdocumento
IF NOT hacerdocumento THEN
CALL fgl_Winmessage("ERROR","CANTIDAD EXCEDE A CANTIDAD EN REQUISICION","INFO")
NEXT FIELD cantidad_1
END IF
END IF
END IF
#=================================================================================================
LET movi3[p_act].cantidad_2 = movi2[p_act].cantidad_2
END IF
ON ACTION guardar
IF pcontrol_cliente = "SI" THEN
FOR idx = 1 TO movi2.getLength()
IF movi2[idx].cod_sec IS NOT NULL THEN
IF movi2[idx].area IS NULL THEN
CALL msg(16)
DISPLAY "ESTOY EN GUARDAR "
NEXT FIELD area
END IF
END IF
END FOR
END IF
LET hacerdocumento=TRUE
LET opc = "NO"
LET opc= fgl_winquestion("INFORMACION", "Toda la Informacion Esta Correcta?","YES","YES|NO","QUESTION",0)
IF OPC = "YES" THEN
BEGIN WORK
# Actualiza tabla control ultimo documento
SELECT num_doc INTO otros_mov.num_doc FROM iptb00007
WHERE cod_mov = otros_mov.cod_mov AND
bodega = otros_mov.bodega
IF status = notfound THEN
LET otros_mov.num_doc = 0
INSERT INTO iptb00007 values(1,otros_mov.cod_mov,null,usuarios,getdate(),null,null,otros_mov.bodega)
END IF
LET otros_mov.num_doc = otros_mov.num_doc + 1
UPDATE iptb00007 set num_doc = otros_mov.num_doc,
us_crea = usuarios,
fech_crea = getdate()
WHERE cod_mov = otros_mov.cod_mov AND bodega = otros_mov.bodega
UPDATE iptb00025 SET num_doc = otros_mov.num_doc WHERE num_doc = tmpnueroExistencia AND
cod_mov = otros_mov.cod_mov
DISPLAY BY NAME otros_mov.num_doc ATTRIBUTE (BLUE)
UPDATE iptb00025 SET num_doc = otros_mov.num_doc
WHERE num_doc = tmpnumero AND cod_mov = otros_mov.cod_mov
# INSERTA REGISTROS DE ENTRADAS CON LOS CONDUCES
IF otros_mov.cod_mov1 IS NOT NULL THEN
INSERT INTO iptb00028 VALUES (otros_mov.cod_mov,otros_mov.num_doc,otros_mov.cod_mov1,
otros_mov.entrada,otros_mov.bodega)
END IF
# INFORMACIONES CUANDO EL MOVIMIENTO ES DE PRODUCCION
IF pcontrol_departamento = "SI" THEN
IF otros_mov.departamento IS NOT NULL THEN
INSERT INTO iptb00026 VALUES (otros_mov.cod_mov,otros_mov.num_doc,otros_mov.departamento,otros_mov.bodega)
END IF
END IF
FOR idx = 1 TO movi2.getLength()
IF movi2[idx].cod_n is not null and movi2[idx].cod_grupo is not null AND
movi2[idx].cod_tipo is not null and movi2[idx].cod_sec is not null THEN
IF movi2[idx].cantidad_2 is not null THEN
IF status_m = "2" THEN
SELECT a.descrip_esp,a.unidad_med,a.control_existencia
INTO p_iptb02.descrip_esp,p_iptb02.unidad_med,p_iptb02.control_existencia
FROM iptb00002 a
WHERE a.cod_n=movi2[idx].cod_n AND
a.cod_grupo = movi2[idx].cod_grupo AND
a.cod_tipo=movi2[idx].cod_tipo AND
a.cod_sec = movi2[idx].cod_sec AND
a.status_t is null
IF p_iptb02.control_existencia = "SI" THEN
LET vexistencia = FALSE
CALL existencia(movi2[idx].cod_n,movi2[idx].cod_grupo,
movi2[idx].cod_tipo,movi2[idx].cod_sec,movi2[idx].cantidad_2,idx,otros_mov.bodega)
RETURNING vexistencia
IF vexistencia THEN
ROLLBACK WORK
CALL fgl_winmessage("ERROR","CANTIDAD EXCEDE EXISTENCIA","STOP")
NEXT FIELD cod_sec
END IF
IF control_devolucion <> "SI" THEN
IF pcontrol_despacho="SI" THEN
#=============================================================================
# CONTROL REQUISICION DESPACHO
#======================================================================
CALL control_requisicion(movi2[idx].cantidad_2,
movi2[idx].cod_n,movi2[idx].cod_grupo,
movi2[idx].cod_tipo,movi2[idx].cod_sec,
movi2[idx].id_kit)
RETURNING estado_req
IF NOT estado_req THEN
ROLLBACK WORK
CALL fgl_winmessage("ERROR","CANTIDAD MAYOR A CANTIDAD REQUISICION","INFO")
DISPLAY movi2[idx].cantidad_1 TO s_movi1[idx].cantidad_1 ATTRIBUTE(RED)
NEXT FIELD cod_Sec
END IF
END IF
END IF
END IF # CONTROL ORDENS
IF movi2[idx].cantidad_2 > 0 THEN
LET movi2[idx].cantidad_2 = movi2[idx].cantidad_2 * -1
END IF
END IF
INSERT INTO iptb00006 (cod_cia,num_doc,fecha,
fact_no,conduce_no,cod_sp,
cod_sp_sec,cod_transp,sec_transp,
placa,cod_tarifa,
cod_mov,detalle,area,
cod_n,cod_grupo,cod_tipo,
cod_sec,cantidad_1,cantidad_2,
bodega,us_crea,fech_crea,
num_req,codigo_bloque,sec_vend,
direccion,num_oc,bodega_d,num_Doc_retrabajo)
VALUES
(otros_mov.cod_cia,otros_mov.num_doc,otros_mov.fecha,
otros_mov.fact_no,otros_mov.conduce_no,otros_mov.cod_sp,
otros_mov.cod_sp_sec,otros_mov.cod_transp,otros_mov.sec_transp,
otros_mov.placa,otros_mov.cod_tarifa,otros_mov.cod_mov,
otros_mov.detalle,movi2[idx].area,movi2[idx].cod_n,
movi2[idx].cod_grupo,movi2[idx].cod_tipo,movi2[idx].cod_sec,
movi2[idx].cantidad_1,movi2[idx].cantidad_2,otros_mov.bodega,
usuarios,getdate(),pnum_req,
movi2[idx].codigo_bloque,psec_vend,direccion_p,
ordenx,otros_mov.bodega_destino,num_doc_ret)
IF pcontrol_transferencia="SI" AND status_m = 2 THEN #condicion status_m=3
INSERT INTO iptb00033 VALUES
(otros_mov.cod_cia,otros_mov.num_doc,otros_mov.fecha,
otros_mov.fact_no,psec_vend,null,null,otros_mov.cod_sp,
otros_mov.cod_sp_sec,otros_mov.cod_transp,
otros_mov.sec_transp,otros_mov.placa,otros_mov.cod_tarifa,
otros_mov.cod_mov,otros_mov.detalle,movi2[idx].cod_n,
movi2[idx].cod_grupo,
movi2[idx].cod_tipo,movi2[idx].cod_sec,
movi2[idx].cantidad_1,movi2[idx].cantidad_2,
'N',null,otros_mov.bodega,otros_mov.bodega_destino,null,'0',usuarios,GETDATE(),null,null)
END IF #fin condicion status_mo=3
# ACTUALIZA LISTA PARA DESPACHO EN STATUS_PRODUCCION
IF pcontrol_departamento = "SI" THEN
# BUSCA LA CANTIDAD DE LA ORDEN PARA ESTE ITEM
LET cantidad_orden =0
SELECT SUM(a.cantidad) INTO cantidad_orden FROM prtb00013 a
WHERE a.num_oc = ordenx AND
a.cod_n = movi2[idx].cod_n AND
a.cod_grupo = movi2[idx].cod_grupo AND
a.cod_tipo = movi2[idx].cod_tipo AND
a.cod_sec = movi2[idx].cod_sec
#CANTIDAD PRODUCIDA
LET cantidad_recibida=0
SELECT SUM(a.cantidad_2) INTO cantidad_recibida
FROM iptb00006 a,iptb00005 b
WHERE a.cod_mov = b.cod_mov AND
b.control_departamento ='SI' AND
a.num_oc = ordenx AND
a.cod_n = movi2[idx].cod_n AND
a.cod_grupo = movi2[idx].cod_grupo AND
a.cod_tipo = movi2[idx].cod_tipo AND
a.cod_sec = movi2[idx].cod_sec AND
a.status_t IS NULL
IF cantidad_recibida >= cantidad_orden THEN
UPDATE prtb00013 SET estado_produccion = 'LISTA PARA DESPACHO',
# fecha_compromiso = otros_mov.fecha,
observacion = otros_mov.detalle,
us_mod = usuarios,
fech_mod = getdate()
WHERE num_oc = ordenx AND
cod_n = movi2[idx].cod_n AND
cod_Grupo = movi2[idx].cod_grupo AND
cod_tipo = movi2[idx].cod_tipo AND
cod_Sec = movi2[idx].cod_sec
LET chconduce = 'S'
LET cuerpo_correo = 'ORDEN: ',ordenx USING "&&&&&&", 'LISTA PARA DESPACHO PARA EL MATERIAL ' ,movi2[idx].descrip_esp CLIPPED,
' ',movi2[idx].unidad_med,' ',movi2[idx].cantidad_2 USING "<<<,<<<.####",'; '
ELSE
UPDATE prtb00013 SET estado_produccion = 'PRODUCCION PARCIAL',
# fecha_compromiso = otros_mov.fecha,
observacion = otros_mov.detalle,
us_mod = usuarios,
fech_mod = getdate()
WHERE num_oc = ordenx AND
cod_n = movi2[idx].cod_n AND
cod_Grupo = movi2[idx].cod_grupo AND
cod_tipo = movi2[idx].cod_tipo AND
cod_Sec = movi2[idx].cod_sec
LET chconduce = 'S'
LET cuerpo_correo = 'ORDEN: ',ordenx USING "&&&&&&", 'PRODUCCION PARCIAL PARA EL MATERIAL ' ,movi2[idx].descrip_esp CLIPPED,
' ',movi2[idx].unidad_med,' ',movi2[idx].cantidad_2 USING "<<<,<<<.####",'; '
END IF
END IF
INSERT INTO prordenlog VALUES (otros_mov.conduce_no,otros_mov.num_doc,movi2[idx].cod_n,
movi2[idx].cod_grupo,
movi2[idx].cod_tipo,movi2[idx].cod_sec,
movi2[idx].cantidad_2,getdate(),otros_mov.cod_mov,movi2[idx].cantidad_1,diferencia)
IF chconduce = 'S' OR control_devolucion = 'SI' THEN
LET cuerpo_correo = cuerpo_correo CLIPPED,' ',movi2[idx].descrip_esp CLIPPED,
' ',movi2[idx].unidad_med,' ',movi2[idx].cantidad_2 USING "<<<,<<<.####",'; '
END IF
END IF { if de cantidad_2 no NULL }
END IF {if cod_n cod_tipo ........ is not null }
END FOR
COMMIT WORK
# ACTUALIZA EL ESTADO DE LA REQUISICION DESPACHO
SELECT SUM(a.cantidad) INTO cantidadRequisicion
FROM cctb00026 a
WHERE a.num_oc = ordenx AND a.status_t IS NULL
IF cantidadRequisicion IS NULL THEN
LET cantidadrequisicion = 0
END IF
SELECT SUM(a.cantidad_2*-1) INTO rcantidad_requisicion
FROM iptb00006 a
WHERE a.num_req = pnum_req AND a.status_t IS NULL
IF rcantidad_requisicion IS NULL THEN
LET rcantidad_requisicion = 0
END IF
LET diferencia = cantidadRequisicion - rcantidad_Requisicion
IF diferencia < .05 THEN
UPDATE cctb00025 set estado_despacho = 'DESPACHADA',
us_mod = usuarios,
fech_mod = getdate()
WHERE num_req = pnum_req
ELSE
UPDATE cctb00025 set estado_despacho = 'DESPACHO PARCIAL',
us_mod = usuarios,
fech_mod = getdate()
WHERE num_req = pnum_req
END IF
# CIERRE ORDENES
LET diferencia = 0
SELECT SUM(cantidad) INTO cantidad_orden
FROM prtb00013 a
WHERE a.num_oc = otros_mov.conduce_no #AND
#a.fech_Crea > datetime (2007-01-01 08:00) year to minute
IF cantidad_orden IS NULL THEN
LET cantidad_orden = 0
END IF
SELECT SUM(cantidad_2*-1) INTO cantidad_conduce
FROM iptb00006 a
WHERE a.num_oc = ordenx AND
a.cod_mov in (12,13,30,31,55) AND
CONVERT (CHAR(10),a.fecha,101) > "01/01/2007" AND
a.status_t is null
IF cantidad_conduce IS NULL THEN
LET cantidad_conduce = 0
END IF
LET diferencia = cantidad_orden - cantidad_conduce
IF diferencia < 0 THEN
LET diferencia = diferencia * -1
END IF
IF diferencia IS NULL THEN
LET diferencia = 0
END IF
IF diferencia < .05 THEN
IF status_m <> 1 THEN
UPDATE prtb00012 set cerrada = "S",estado_despacho = 'DESPACHADA',us_mod = usuarios,fech_mod = getdate()
WHERE num_oc = ordenx
# ACTUALIZA EL ESTADO DE LA REQUISICION DESPACHO
UPDATE cctb00025 set estado_despacho = 'DESPACHADA',
us_mod = usuarios,
fech_mod = getdate()
WHERE num_req = pnum_req
END IF
END IF
IF otros_mov.cod_mov = 12 OR otros_mov.cod_mov = 13 THEN
UPDATE cctb00025 set estado_despacho = 'DESPACHO PARCIAL',
us_mod = usuarios,fech_mod = getdate()
WHERE num_req =pnum_req AND
status_t IS NULL
IF cantidad_devuelta > cantidad_orden THEN
UPDATE prtb00012 SET estado_devolucion ='DEVOLUCION COMPLETA',us_mod = usuarios,fech_mod = getdate()
WHERE num_oc = otros_mov.conduce_no
ELSE
UPDATE prtb00012 SET estado_devolucion ='DEVOLUCION PARCIAL',us_mod = usuarios,fech_mod = getdate()
WHERE num_oc = otros_mov.conduce_no
END IF
END IF
SELECT a.descrip_mov INTO pdescripmov FROM iptb00005 a WHERE a.cod_mov = otros_mov.cod_mov
#-> Actualiza la tabla de monitoreo de las ordenes de corte vg. Saturday, 03 March, 2001 10:51:42 AM
IF otros_mov.conduce_no IS NOT NULL THEN
LET prtb09.detalle =pdescripmov CLIPPED, " CON EL NUMERO DE DOCUMENTO: ",otros_mov.num_doc USING "<<<<<<<",
" DE FECHA : ",otros_mov.fecha USING "dd/mm/yyyy"
INSERT INTO prtb00009
VALUES (ordenx,otros_mov.fecha,NULL,"S",prtb09.detalle,NULL,USER,getdate(),NULL,NULL)
END IF
# PROCEDIMIENTO ENVIO CORREO
IF chconduce = 'S' OR pcontrol_departamento = "SI" THEN
LET TOEmail = NULL
IF psec_vend IS NOT NULL THEN
SELECT UNIQUE a.email INTO TOEmail
FROM seg0000 a
WHERE a.sec_vend = psec_vend
END IF
# INFORMACION PARA ENVIAR EL CORREO A LOS VENDEDORES
LET subject = otros_mov.conduce_no,pdescripmov CLIPPED
IF TOEmail IS NULL THEN
LET TOEmail = "jsoto@marmotech.com.do"
ELSE
LET toemail=toemail CLIPPED,";soporteclientes@marmotech.com.do"
END IF
DECLARE buscaCorreos CURSOR FOR
SELECT a.correo FROM seg0003 a
WHERE a.controldespacho = 'SI'
LET ccemail = NULL
FOREACH buscacorreos INTO PCCEMAIL
LET CCEmail = Pccemail CLIPPED,';',CCEmail
END FOREACH
# LET toemail = 'jsoto@marmotech.com.do'
# LET ccemail = 'jsoto@marmotech.com.do'
IF ccemail IS NULL THEN
LET ccemail = 'jsoto@marmotech.com.do'
END IF
IF subject IS NULL THEN
LET subject = 'DOCUMENTO ',otros_mov.num_doc USING "&&&&&&&&"," CODIGO MOV ",otros_mov.cod_mov USING "&&&"
END IF
IF TOemail IS NULL THEN
LET TOemail = "soporteclienteclientes@marmotech.com.do"
END IF
LET cuerpo_correo = 'CLIENTE: ',otros_mov.descrip4 CLIPPED,", ",
otros_mov.detalle CLIPPED
LET procedimiento = "{ call cc_avisadespacho(?,?,?,?) }" CLIPPED
CALL envia_correo(TOemail,CCEmail,cuerpo_correo,
subject, procedimiento )
END IF
LET opt2 = fgl_winquestion("IMPRESION","Desea Imprimir Formulario Ahora?","YES","YES|NO","QUESTION",0)
IF opt2 = "YES" THEN
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 formu4 TO archivo
LET ya = NULL
FOR idx = 1 TO arr_count()
IF movi2[idx].cod_sec IS NOT NULL THEN
OUTPUT TO REPORT formu4(otros_mov.*,movi2[idx].*)
END IF
END FOR
FINISH REPORT formu4
RUN imprime
END IF
######### ADICION A SQL_E CUANDO ES DEVOLUCION MERCANCIA
IF control_devolucion = "SI" THEN
SET CONNECTION "SQL_E"
LET xnum_doc_c = otros_mov.num_doc
SELECT a.num_doc INTO tmpnumero
FROM iptb00007 a
WHERE a.cod_mov = otros_mov.cod_mov #AND
# a.bodega = otros_mov.bodega
IF tmpnumero IS NULL THEN
INSERT INTO iptb00007 (num_doc,cod_mov,bodega)
VALUES (1,otros_mov.cod_mov,otros_mov.bodega)
ELSE
LET num_doc_e = tmpnumero + 1
END IF
LET factura_e = NULL
FOR idx = 1 TO movi2.getLength()
IF movi2[idx].cod_n IS NOT NULL THEN
SELECT MAX(a.factura),MAX(a.sucid) INTO factura_e,psucid FROM vetb00002 a,vetb00003 b
WHERE a.factura_c = otros_mov.fact_no AND
a.factura = b.factura AND
(b.cod_n = movi2[idx].cod_n AND b.cod_grupo = movi2[idx].cod_grupo AND
b.cod_tipo = movi2[idx].cod_tipo AND b.cod_sec = movi2[idx].cod_sec ) AND
a.status_t IS NULL
IF factura_e IS NOT NULL THEN
INSERT INTO iptb00006 (cod_cia,num_doc,fact_no,fecha,cod_transp,sec_transp,
cod_sp,cod_sp_sec,placa,cod_tarifa,cod_mov,area,cod_n,
cod_grupo,cod_tipo,cod_sec,cantidad_1,cantidad_2,
bodega,us_crea,fech_crea,num_oc,cotizacion_no,num_doc_c,
conduce_no,
detalle,num_req,sec_vend)
VALUES (otros_mov.cod_cia,num_doc_e,
factura_e,otros_mov.fecha,
otros_mov.cod_transp,otros_mov.sec_transp,otros_mov.cod_sp,
otros_mov.cod_sp_sec,otros_mov.placa,otros_mov.cod_tarifa,
otros_mov.cod_mov,movi2[idx].area, movi2[idx].cod_n,
movi2[idx].cod_grupo,movi2[idx].cod_tipo,
movi2[idx].cod_sec,movi2[idx].cantidad_1, movi2[idx].cantidad_2,'1',usuarios,getdate(),ordenx,
xcotizacion,xnum_doc_c,otros_mov.conduce_no,otros_mov.detalle,pnum_req,psec_vend)
END IF
END IF
END FOR
UPDATE iptb00007 SET num_doc = num_doc_e WHERE cod_mov = otros_mov.cod_mov
IF otros_mov.cod_mov = 12 OR otros_mov.cod_mov=13 THEN
IF aplica_dev == 1 THEN
CALL insertaData()
END IF
END IF
END IF
END IF
SET CONNECTION "SQL_C"
LET numero_msg = 1
CALL msg(numero_msg)
CALL movi2.clear()
END INPUT
ON ACTION CANCEL
LET INT_FLAG = FALSE
CALL msg(2)
EXIT PROGRAM
END DIALOG
END FUNCTION
REPORT formu4(x,z)
DEFINE x RECORD
num_doc LIKE iptb00006.num_doc,
cod_cia LIKE iptb00006.cod_cia,
cod_mov LIKE iptb00006.cod_mov,
fact_no LIKE iptb00006.fact_no,
cod_transp LIKE iptb00006.cod_transp,
sec_transp LIKE iptb00006.sec_transp,
cod_tarifa LIKE iptb00006.cod_tarifa,
placa LIKE iptb00006.placa,
fecha LIKE iptb00006.fecha,
conduce_no LIKE iptb00006.conduce_no,
-- descrip_mov CHAR(40), #LIKE intb00005.descrip_mov,
bodega LIKE iptb00006.bodega,
bodega_destino SMALLINT,
detalle LIKE iptb00006.detalle,
cod_sp LIKE iptb00006.cod_sp,
cod_sp_sec LIKE iptb00006.cod_sp_sec,
departamento SMALLINT,
nombre_depto CHAR(30),
cod_mov1 SMALLINT,
entrada INT,
descrip_mov1 CHAR(40),
descrip4 CHAR(30)
END RECORD
DEFINE z RECORD
area SMALLINT,
cod_n LIKE intb00003.cod_n,
cod_grupo LIKE intb00003.cod_grupo,
cod_tipo LIKE intb00003.cod_tipo,
cod_sec LIKE intb00003.cod_sec,
cantidad_1 LIKE iptb00006.cantidad_1,
cantidad_2 LIKE iptb00006.cantidad_2,
cantidad_p DEC(12,5),
unidad_med LIKE iptb00002.unidad_med,
descrip_esp CHAR(80),
existencia DEC(12,5),
disponible DEC(12,5),
codigo_bloque CHAR(15),
id_kit INT
END RECORD,
etiqueta,ptelefono,ptelefono1,pcelular,nombre,apellido CHAR(30),
plado1,plado2,plado3,pcantidad,pmedida DEC(12,5),
pprovincia SMALLINT,
nombre_provincia CHAR(30),
nombre_p CHAR(70),
total_unidades INT,
hora CHAR(5),
pubica CHAR(60),
porden_cliente varchar(25)
DEFINE usuario_c CHAR(9)
DEFINE signo CHAR(1)
DEFINE doce,normal,doble,doble_of,negras,negras_off CHAR(2)
DEFINE l,cuenta SMALLINT,
darea varchar(40)
OUTPUT
LEFT MARGIN 0
ORDER BY x.num_doc,z.area,z.cod_sec
FORMAT
BEFORE GROUP OF x.num_doc
LET doble = ASCII 14
LET doble_of = ASCII 20
LET negras = ASCII 27, ASCII 69
LET negras_off = ASCII 27, ASCII 70
LET comp_on = ASCII 15
SELECT unique us_crea INTO usuario_c
FROM iptb00006 WHERE num_doc = x.num_doc AND
cod_mov = x.cod_mov AND
us_crea = user
LET doce = ASCII 27, ASCII 77
LET normal = ASCII 27, ASCII 80
LET hora = time
PRINT doce
#PRINT COLUMN 1, negras,doble,p_companias.nombre CLIPPED
IF x.cod_sp <> 19 AND x.cod_sp <> 18 THEN
PRINT COLUMN 1,doble, "M A R M O T E C H, S. A.",doble_of
END IF
PRINT COLUMN 71,"No. ",doble,x.num_doc using "<<<<<<"
#LET l = (80 - LENGTH ("OTROS MOVIMIENTOS")) / 2
PRINT #COLUMN l, "OTROS MOVIMIENTOS",
COLUMN 71, x.fecha using "dd/mm/yyyy"
PRINT COLUMN 71, hora
LET l = (70 - LENGTH (pdescripmov)) / 2
PRINT COLUMN l-2, doble,negras,"(",x.cod_mov using "&&",") ",pdescripmov,doble_of
PRINT negras_off
IF x.cod_mov = 12 THEN
PRINT COLUMN 1, "Factura No: ",x.fact_no using "&&&&&&"
END IF
IF x.detalle is null THEN
LET x.detalle = "**************************************"
END IF
{ COMENTARIO DE ESTAS DIRECCIONES PORQUE SOLO SE VA A TOMAR LA DIRECCION DEL PROYECTO
QUE ASU VEZ VIENE EN EL MENSAJE DE LA REQUISICION
SELECT a.calle,a.casa_num,a.urbanizacion,b.telefono,b.telex,c.nom1_emp,c.apell1_emp,b.cod_provincia
INTO pcalle,pcasa_num,purbanizacion,ptelefono,pcelular,nombre,apellido,pprovincia
FROM vetb00005 a,vetb00004 b,vetb00028 d,adtb00003 c
WHERE a.tipo_cliente = x.cod_sp AND
a.sec_cliente = x.cod_sp_sec AND
a.tipo_cliente = d.tipo_cliente AND
a.sec_cliente = d.sec_cliente AND
a.tipo_cliente = b.tipo_cliente AND
a.sec_cliente = b.sec_cliente AND
d.sec_vend = c.num_emp
SELECT a.nombre_proyecto,a.direccion_proyecto INTO nombre_p,direccion_p
FROM vetb00050 a
WHERE a.tipo_cliente = x.cod_sp AND
a.sec_cliente = x.cod_sp_Sec AND
a.cotizacion_no = xcotizacion
}
LET pcelular = NULL
LET ptelefono = NULL
LET ptelefono1 = NULL
LET nombre_p = null
LET nombre = NULL
SELECT a.nom1_emp+' '+a.apell1_emp INTO nombre
FROM adtb00003 a
WHERE a.num_emp = psec_vend
SELECT a.nombre_proyecto,a.telefono_r,a.telefono_o,a.celular1
INTO nombre_p,ptelefono,ptelefono1,pcelular
FROM vetb00050 a
WHERE a.cotizacion_no = xcotizacion
LET nombre_provincia = NULL
IF x.cod_mov = 30 OR x.cod_mov = 31 THEN
SELECT a.nombre_provincia INTO nombre_provincia
FROM vetb00020 a
WHERE a.cod_provincia = pprovincia
END IF
IF x.cod_mov = 55 THEN
SELECT unique a.nom_pais INTO nombre_provincia FROM cotb00018 a
WHERE a.cod_pais = pprovincia
END IF
SELECT a.direccion,a.nombre_file INTO pubica,porden_cliente FROM prtb00012 a
WHERE a.num_oc = x.conduce_no AND CONVERT (CHAR(10),a.fech_crea,103) > "01/01/2007"
# SELECT a.observacion INTO pobserva FROM prtb00014 a
# WHERE a.num_oc = x.conduce_no AND a.fech_crea > datetime (2007-01-01 08:00) year to minute
# BUSCA BODEGAS
SELECT a.descripcion INTO almacen_origen FROM intb00009 a
WHERE a.cod_bodega = x.bodega
SELECT a.descripcion INTO almacen_destino FROM intb00009 a
WHERE a.cod_bodega = x.bodega_destino
PRINT COLUMN 1, "ALMACEN : ",almacen_origen
PRINT COLUMN 1, "ALMACEN DESTINO : ",almacen_destino
PRINT COLUMN 1, "CLIENTE : ",negras, x.descrip4," (",
x.cod_sp using "&&","-",
x.cod_sp_sec using "&&&&&&",")",negras_off
#PRINT COLUMN 1, "DIRECCION: ",pcalle CLIPPED," ",pcasa_num CLIPPED," ",purbanizacion CLIPPED,
# " TELEFONO: ",ptelefono CLIPPED," CELULAR: ",pcelular
PRINT COLUMN 1, "Proyecto : ",nombre_p CLIPPED, " DIRECCION: ",direccion_p CLIPPED
PRINT COLUMN 1, "TELEFONO1: ",ptelefono CLIPPED," TELEFONO2 :,",ptelefono1, " CELULAR: ",pcelular
PRINT COLUMN 1, "Vendedor : ",nombre clipped," ",apellido
PRINT COLUMN 1, "Entrada : ",x.entrada USING "<<<<<<"," (",x.cod_mov1 USING "<<<",") ",x.descrip_mov1 CLIPPED
PRINT COLUMN 1, "Orden : ",x.conduce_no,
COLUMN 20,"ORDEN CLIENTE: ",porden_cliente," COTIZACION NO: ",xcotizacion USING "&&&&&&"
#,"Observacion Orden: ",pobserva CLIPPED
PRINT COLUMN 1, "Requisicion: ",pnum_req USING "<<<<<<"
#PRINT COLUMN 1, "Ubicacion: ",pubica CLIPPED
IF x.departamento IS NOT NULL THEN
PRINT COLUMN 1, "DEPARTAMENTO: ",x.departamento USING "<<<<"," ",x.nombre_depto
END IF
PRINT comp_on
PRINT COLUMN 1,
"-----------------------------------------------------------------------------",
"-------------------------------------------------------------------"
PRINT COLUMN 2,doble, "PRODUCTO(S)",doble_of CLIPPED
PRINT COLUMN 123, "CANTIDAD"
PRINT COLUMN 108, "CANTIDAD",
COLUMN 123, "PENDIENTE"
PRINT COLUMN 94, "UNIDADES",
COLUMN 108, "A DESPACHAR",
# COLUMN 123, "CON ESTA TRANSACCION",
2 SPACES, "BLOQUE"
PRINT COLUMN 1,
"-----------------------------------------------------------------------------",
"-------------------------------------------------------------------"
SKIP 1 LINES
BEFORE GROUP OF z.area
SELECT a.nombre_Area INTO darea FROM prtb00016 a
WHERE a.area_num = z.area
PRINT COLUMN 2, darea CLIPPED
ON EVERY ROW
IF z.cod_n is not null and z.cod_grupo is not null and
z.cod_tipo is not null and z.cod_sec is not null THEN
PRINT COLUMN 2, z.cod_n using "&&&&","-",
z.cod_grupo using "&&&&","-",
z.cod_tipo using "&&&&&&","-",
z.cod_sec using "&&&&&&&"," ",
z.descrip_esp[1,64] ," ";
IF cuenta = 1 THEN
LET signo = "+"
ELSE
LET signo = "-"
LET z.cantidad_2 = z.cantidad_2 * -1
END IF
IF z.cantidad_2 < 0 THEN
LET z.cantidad_2 = z.cantidad_2 * -1
END IF
PRINT COLUMN 69, z.cantidad_1 USING "###,###.#####",
COLUMN 84, z.cantidad_2 using "###,###.#####"," ",z.unidad_med,
COLUMN 105, z.cantidad_p using "###,###.#####",
2 SPACES, z.codigo_bloque
IF z.descrip_esp[65,80] <> ' ' THEN
PRINT COLUMN 22,z.descrip_esp[65,80]
END IF
DECLARE busca_d1 CURSOR FOR
SELECT b.descripcion,a.lado_1,a.lado_2,a.lado_3,a.cantidad,a.medida
FROM iptb00025 a,vetb00026 b
WHERE a.area = z.area AND
a.cod_n = z.cod_n AND
a.cod_grupo = z.cod_grupo AND
a.cod_tipo = z.cod_tipo AND
a.cod_sec = z.cod_sec AND
a.cod_mov = X.cod_mov AND
a.num_Doc = x.num_doc AND
CAST(a.etiqueta AS SMALLINT)= b.codid
LET total_unidades = 0
FOREACH busca_d1 INTO etiqueta,plado1,plado2,plado3,pcantidad,pmedida
PRINT COLUMN 19,pcantidad USING "<,<<<"," ",etiqueta ," DE ",plado1 USING "<<.#####"," X ",
plado2 USING "<<.#####"," X ",plado3 USING "<<.#####"," = ",pmedida USING "<<<.#####"
LET total_unidades = total_unidades + pcantidad
END FOREACH
IF total_unidades > 0 THEN
PRINT COLUMN 19, "TOTAL UNIDADES ",total_unidades USING "<,<<<"
END IF
END IF
PAGE TRAILER
SKIP 1 LINE
PRINT COLUMN 1, "OBSERVACIONES: ", UPSHIFT(x.detalle)
SKIP 1 LINE
PRINT COLUMN 1, "TRANSPORTISTA: ",descrip2
PRINT COLUMN 1, "PLACA : ",x.placa
SKIP 4 LINES
PRINT COLUMN 1, "------------------",
COLUMN 32, "------------------",
COLUMN 55, "------------------"
PRINT COLUMN 5, "Entregado Por",
COLUMN 34, "Recibido Por",
COLUMN 58, "Aprobado Por"
SKIP 1 LINE
PRINT COLUMN 2,
"Original: Contabilidad Copia: Vendedor Copia: Ventas Copia: Almacen"
PRINT normal
END REPORT
FUNCTION busca_vend()
DEFINE arr_vend ARRAY[200] OF RECORD
sec_cliente INTEGER,
num_emp INTEGER,
nombre CHAR(30)
END RECORD
OPEN WINDOW busca_1 AT 8,4 WITH FORM "ipfmwd004" ATTRIBUTE (BORDER,FORM LINE
FIRST + 1,PROMPT LINE LAST)
DECLARE busca_1 CURSOR FOR
SELECT a.sec_cliente,a.num_emp,b.nombre FROM vetb00033 a,vetb00004 b
WHERE a.sec_cliente = b.sec_cliente AND a.status_t IS NULL
ORDER BY 1
LET idx = 1
FOREACH busca_1 INTO arr_vend[idx].*
LET idx = idx + 1
END FOREACH
CALL SET_COUNT(idx - 1)
DISPLAY ARRAY arr_vend TO sc_vend.*
LET idx = ARR_CURR()
LET busca_v.sec_cliente = arr_vend[idx].sec_cliente
LET busca_v.nombre = arr_vend[idx].nombre
CLOSE WINDOW busca_1
END FUNCTION
FUNCTION busca_prod1()
DEFINE arr_prod DYNAMIC ARRAY OF RECORD
cod_n INTEGER,
cod_grupo INTEGER,
cod_tipo INTEGER,
cod_sec INTEGER,
descrip_esp CHAR(30),
unidad_med CHAR(5)
END RECORD
OPEN WINDOW busca_2 AT 8,4 WITH FORM "ipfmwd001" ATTRIBUTE (BORDER,FORM LINE
FIRST + 1,PROMPT LINE LAST)
CONSTRUCT criterio ON a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp
FROM cod_n,cod_grupo,cod_tipo,cod_sec,descrip_esp
LET selec_pt =
"SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp, ",
" a.unidad_med FROM iptb00002 a ",
"WHERE a.status_t IS NULL AND ",criterio CLIPPED," ORDER BY a.descrip_esp "
PREPARE comando_p FROM selec_pt
DECLARE busca_2 CURSOR FOR comando_p
LET idx = 1
FOREACH busca_2 INTO arr_prod[idx].*
LET idx = idx + 1
END FOREACH
CALL SET_COUNT(idx - 1)
DISPLAY ARRAY arr_prod TO s_prod.*
LET idx = ARR_CURR()
LET busca_p.cod_n = arr_prod[idx].cod_n
LET busca_p.cod_grupo = arr_prod[idx].cod_grupo
LET busca_p.cod_tipo = arr_prod[idx].cod_tipo
LET busca_p.cod_sec = arr_prod[idx].cod_sec
LET busca_p.descrip_esp = arr_prod[idx].descrip_esp
LET busca_p.unidad_med = arr_prod[idx].unidad_med
# para el precio
LET p_vetb25.cod_n = arr_prod[idx].cod_n
LET p_vetb25.cod_grupo = arr_prod[idx].cod_grupo
LET p_vetb25.cod_tipo = arr_prod[idx].cod_tipo
LET p_vetb25.cod_sec = arr_prod[idx].cod_sec
LET descrip1 = arr_prod[idx].descrip_esp
LET medida = arr_prod[idx].unidad_med
CLOSE WINDOW busca_2
END FUNCTION
FUNCTION despiece()
DEFINE cetiqueta VARCHAR(20),
total_cantidad FLOAT
OPEN WINDOW wdespiece AT 5,3 WITH FORM "ipfmwd010" ATTRIBUTE (BORDER,FORM LINE
FIRST + 1,PROMPT LINE LAST)
DISPLAY BY NAME movi2[p_act].descrip_esp,movi2[p_act].unidad_med
CALL despiece.clear()
IF otros_mov.entrada IS NOT NULL THEN
DECLARE busca_ent CURSOR FOR
SELECT a.etiqueta,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.lado_1,a.lado_2,a.lado_3,a.cantidad,a.medida
FROM iptb00025 a
WHERE a.cod_mov = otros_mov.cod_mov1 AND
a.num_doc = otros_mov.entrada AND
a.cod_n = movi2[p_act].cod_n AND
a.cod_grupo = movi2[p_act].cod_grupo AND
a.cod_tipo = movi2[p_act].cod_tipo AND
a.cod_sec = movi2[p_act].cod_sec AND
a.area = movi2[p_act].area
UNION
SELECT a.etiqueta,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.lado_1,a.lado_2,a.lado_3,a.cantidad,a.medida
FROM iptb00025 a
WHERE a.cod_mov = otros_mov.cod_mov AND
a.num_doc = tmpnumero AND
a.cod_n = movi2[p_act].cod_n AND
a.cod_grupo = movi2[p_act].cod_grupo AND
a.cod_tipo = movi2[p_act].cod_tipo AND
a.cod_sec = movi2[p_act].cod_sec AND
a.area = movi2[p_act].area
LET idx = 1
FOREACH busca_ent INTO despiece[idx].*
LET idx = idx + 1
END FOREACH
ELSE
SELECT UNIQUE a.cod_n FROM iptb00025 a
WHERE a.cod_mov = otros_mov.cod_mov AND
a.num_doc = otros_mov.num_doc AND
a.cod_n = movi2[p_act].cod_n AND
a.cod_grupo = movi2[p_act].cod_grupo AND
a.cod_tipo = movi2[p_act].cod_tipo AND
a.cod_sec = movi2[p_act].cod_sec AND
a.area = movi2[p_act].area
IF STATUS = NOTFOUND THEN
DECLARE busca_despiece CURSOR FOR
SELECT a.etiqueta,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.lado_1,a.lado_2,a.lado_3,a.cantidad,a.medida
FROM prtb00022 a
WHERE
a.num_oc =ordenx AND
a.cod_n = movi2[p_act].cod_n AND
a.cod_grupo = movi2[p_act].cod_grupo AND
a.cod_tipo = movi2[p_act].cod_tipo AND
a.cod_sec = movi2[p_act].cod_sec AND
a.area = movi2[p_act].area
LET idx = 1
FOREACH busca_despiece INTO despiece[idx].*
LET idx = idx + 1
END FOREACH
ELSE
IF pcontrol_despacho <> "SI" THEN
DECLARE busca_despiece1 CURSOR FOR
SELECT b.descripcion,a.cod_n,a.cod_grupo,a.cod_tipo,
a.cod_sec,a.lado_1,a.lado_2,a.lado_3, a.cantidad,a.medida
FROM prtb00022 a,vetb00026 b
WHERE a.num_oc = otros_mov.conduce_no AND
a.area = movi2[p_act].area AND
a.cod_n = movi2[p_act].cod_n AND
a.cod_grupo = movi2[p_act].cod_grupo AND
a.cod_tipo = movi2[p_act].cod_tipo AND
a.cod_sec = movi2[p_act].cod_sec AND
CAST(a.etiqueta AS SMALLINT) = b.codid
LET idx = 1
FOREACH busca_despiece1 INTO despiece[idx].*
LET idx = idx + 1
END FOREACH
ELSE
DECLARE busca_despiece12 CURSOR FOR
SELECT a.etiqueta,a.cod_n,a.cod_grupo,a.cod_tipo,
a.cod_sec,a.lado_1,a.lado_2,a.lado_3,
c.cantidad_r,c.medida_r
FROM prtb00022 a, cctb00027 c
WHERE a.num_oc = ordenx AND
a.area = c.area AND
a.area = movi2[p_act].area AND
a.cod_n = movi2[p_act].cod_n AND
a.cod_grupo = movi2[p_act].cod_grupo AND
a.cod_tipo = movi2[p_act].cod_tipo AND
a.cod_sec = movi2[p_act].cod_sec AND
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
c.num_req = pnum_req
LET idx = 1
LET total_cantidad = 0
FOREACH busca_despiece12 INTO despiece[idx].*
LET total_cantidad = total_cantidad + despiece[idx].cantidad
LET idx = idx + 1
END FOREACH
END IF
END IF
END IF
LET despiece[1].cod_n = movi2[p_act].cod_n
LET despiece[1].cod_grupo = movi2[p_act].cod_grupo
LET despiece[1].cod_tipo = movi2[p_act].cod_tipo
LET despiece[1].cod_sec = movi2[p_act].cod_sec
DISPLAY BY NAME total_cantidad
CALL set_count(idx-1)
INPUT ARRAY despiece WITHOUT DEFAULTS FROM sdespiece.*
BEFORE ROW
LET curr1 = arr_curr()
LET fila = scr_line()
CALL cetiquetas()
LET despiece[curr1].cod_n = movi2[p_act].cod_n
LET despiece[curr1].cod_grupo = movi2[p_act].cod_grupo
LET despiece[curr1].cod_tipo = movi2[p_act].cod_tipo
LET despiece[curr1].cod_sec = movi2[p_act].cod_sec
IF curr1 > 1 THEN
IF despiece[curr1].etiqueta IS NULL THEN
LET despiece[curr1].etiqueta = despiece[curr1-1].etiqueta
END IF
END IF
DISPLAY cetiqueta TO sdespiece[fila].etiqueta
DISPLAY movi2[p_act].cod_n TO sdespiece[fila].cod_n
DISPLAY movi2[p_act].cod_grupo TO sdespiece[fila].cod_grupo
DISPLAY movi2[p_act].cod_tipo TO sdespiece[fila].cod_tipo
DISPLAY movi2[p_act].cod_sec TO sdespiece[fila].cod_sec
AFTER FIELD cantidad
IF movi2[p_act].unidad_med = "M2" THEN
LET despiece[curr1].medida =
despiece[curr1].cantidad * (despiece[curr1].lado_1 * despiece[curr1].lado_2)
END IF
IF movi2[p_act].unidad_med = "M3" THEN
LET despiece[curr1].medida =
despiece[curr1].cantidad * (despiece[curr1].lado_1 * despiece[curr1].lado_2 * despiece[curr1].lado_3)
END IF
IF movi2[p_act].unidad_med = "ML" THEN
LET despiece[curr1].medida =
despiece[curr1].cantidad * despiece[curr1].lado_1
LET despiece[curr1].lado_2 = 0
END IF
IF movi2[p_act].unidad_med = "UD" OR movi2[p_act].unidad_med = "GL" THEN
LET despiece[curr1].medida = despiece[curr1].cantidad
END IF
DISPLAY despiece[curr1].medida TO sdespiece[fila].medida
AFTER ROW
IF despiece[curr1].medida IS NULL AND despiece[curr1].lado_1 IS NOT NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD lado_1
END IF
LET total_medida = 0
LET total_cantidad =0
FOR idx = 1 TO despiece.getLength()
IF despiece[idx].medida IS NOT NULL THEN
LET total_cantidad = total_cantidad + despiece[idx].cantidad
LET total_medida = total_medida + despiece[idx].medida
END IF
END FOR
DISPLAY BY NAME total_medida,total_cantidad
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
EXIT INPUT
END IF
LET total_medida = 0
LET total_cantidad=0
FOR idx = 1 TO arr_count()
IF despiece[idx].medida IS NOT NULL THEN
LET total_medida = total_medida + despiece[idx].medida
LET total_cantidad = total_cantidad + despiece[idx].cantidad
END IF
END FOR
DISPLAY BY NAME total_medida,total_cantidad
END INPUT
IF int_flag THEN
LET int_flag = FALSE
CLOSE WINDOW wdespiece
RETURN
END IF
DELETE FROM iptb00025 WHERE num_doc = otros_mov.num_doc AND
cod_mov = otros_mov.cod_mov AND
cod_n = movi2[p_act].cod_n AND
cod_grupo = movi2[p_act].cod_grupo AND
cod_tipo = movi2[p_act].cod_tipo AND
cod_sec = movi2[p_act].cod_sec AND
area = movi2[p_act].area
LET total_medida = 0
FOR idx = 1 TO arr_count()
IF despiece[idx].medida IS NOT NULL THEN
INSERT INTO iptb00025 (etiqueta
,cod_mov
,num_doc
,area
,cod_n
,cod_grupo
,cod_tipo
,cod_sec
,lado_1
,lado_2
,lado_3
,cantidad
,medida
,us_crea,fech_crea)
VALUES (despiece[idx].etiqueta,otros_mov.cod_mov,otros_mov.num_doc,
movi2[p_act].area,movi2[p_act].cod_n,movi2[p_act].cod_grupo,
movi2[p_act].cod_tipo,movi2[p_act].cod_sec,
despiece[idx].lado_1,despiece[idx].lado_2,
despiece[idx].lado_3,despiece[idx].cantidad,
despiece[idx].medida,usuarios,getdate())
LET total_medida = total_medida + despiece[idx].medida
END IF
END FOR
LET movi2[p_act].cantidad_1 = total_medida
CLOSE WINDOW wdespiece
END FUNCTION
FUNCTION consulta()
CONSTRUCT CRITERIO ON iptb00006.num_Doc,iptb00006.cod_mov,iptb00006.fecha,iptb00006.conduce_no,
iptb00006.cod_sp,iptb00006.cod_sp_Sec,iptb00006.bodega
FROM num_doc,cod_mov,fecha,conduce_no,cod_sp,cod_sp_sec,bodega
BEFORE CONSTRUCT
CALL cmovimientos()
AFTER CONSTRUCT
IF INT_FLAG THEN
LET INT_FLAG = FALSE
RETURN
END IF
END CONSTRUCT
CALL movi2.clear()
LET selec =
"SELECT DISTINCT iptb00006.num_doc, iptb00006.cod_cia , iptb00006.cod_mov , iptb00006.fact_no, iptb00006.cod_transp, ",
"iptb00006.sec_transp, iptb00006.cod_tarifa , iptb00006.placa, iptb00006.fecha, iptb00006.conduce_no,",
" iptb00006.bodega , iptb00006.bodega_d, iptb00006.detalle, iptb00006.cod_sp, ",
"iptb00006.cod_sp_sec, iptb00026.departamento, adtb00001.nom_dpto, iptb00028.cod_mov1,iptb00028.entrada, ",
" ' ',' ',iptb00006.num_req,iptb00006.sec_vend ",
" FROM adtb00001 INNER JOIN ",
" iptb00026 ON adtb00001.departamento = iptb00026.departamento RIGHT OUTER JOIN ",
" iptb00006 INNER JOIN ",
" iptb00048 ON iptb00006.bodega = iptb00048.bodega AND iptb00048.usuario ='",usuarios,"'",
" INNER JOIN iptb00005 ON iptb00006.cod_mov = iptb00005.cod_mov ON ",
" iptb00026.num_doc = iptb00006.num_doc AND ",
" iptb00026.cod_mov = iptb00006.cod_mov LEFT OUTER JOIN ",
" iptb00028 ON iptb00006.num_doc = iptb00028.num_doc AND iptb00006.cod_mov = iptb00028.cod_mov ",
"WHERE ", criterio CLIPPED, " and IPTB00006.status_t IS NULL and iptb00006.fecha > '01/01/2009'"
PREPARE comando FROM selec
DECLARE busca4 SCROLL CURSOR WITH HOLD FOR comando
OPEN busca4
FETCH FIRST busca4 INTO otros_mov.*,pnum_req,psec_vend
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
CALL busca_info()
DISPLAY BY NAME otros_mov.*,pnum_req,psec_vend
MENU "Busqueda "
COMMAND "Siguiete " "Sieguiente Registro Cumpla Condicion"
FETCH NEXT busca4 INTO otros_mov.*,pnum_req,psec_vend
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
CALL busca_info()
DISPLAY BY NAME otros_mov.*,pnum_req,psec_vend
COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado"
FETCH PREVIOUS busca4 INTO otros_mov.*,pnum_req,psec_vend
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
CALL busca_info()
DISPLAY BY NAME otros_mov.*,pnum_req,psec_vend
COMMAND "Primero" "Presenta en pantalla el primer registro encontrado"
FETCH FIRST busca4 INTO otros_mov.*,pnum_req,psec_vend
LET numero_msg = 5
CALL msg(numero_msg)
CALL busca_info()
DISPLAY BY NAME otros_mov.*,psec_vend
COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado"
FETCH LAST busca4 INTO otros_mov.*,pnum_req,psec_vend
LET numero_msg = 4
CALL msg(numero_msg)
CALL busca_info()
DISPLAY BY NAME otros_mov.*,pnum_req,psec_vend
COMMAND "Items" "Busca Items"
DECLARE busca1 CURSOR FOR
SELECT a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,
a.cantidad_1,a.cantidad_2,'0',b.unidad_med,b.descrip_esp
FROM iptb00006 a,iptb00002 b
WHERE a.num_doc = otros_mov.num_doc AND
a.cod_mov = otros_mov.cod_mov AND
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.bodega = otros_mov.bodega AND
a.fech_crea > '01/01/2009 08:00'
ORDER BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec
LET idx = 1
FOREACH busca1 INTO movi2[idx].*
IF movi2[idx].cantidad_2 < 0 THEN
LET movi2[idx].cantidad_2 = movi2[idx].cantidad_2 * -1
END IF
SELECT SUM(a.cantidad) INTO cantidad_conduce FROM prtb00013 a
WHERE a.cod_n = movi2[idx].cod_n AND
a.cod_grupo = movi2[idx].cod_grupo AND
a.cod_tipo = movi2[idx].cod_tipo AND
a.cod_sec = movi2[idx].cod_sec AND
a.num_oc = otros_mov.conduce_no AND
a.status_t IS NULL
LET cantidad_orden =0
IF otros_mov.cod_mov = 30 AND otros_mov.cod_mov = 31 OR otros_mov.cod_mov = 55 THEN
SELECT SUM(a.cantidad_2*-1) INTO cantidad_orden
FROM iptb00006 a
WHERE a.cod_n=movi2[idx].cod_n and a.cod_grupo=movi2[idx].cod_grupo
and a.cod_tipo=movi2[idx].cod_tipo and a.cod_sec=movi2[idx].cod_sec
and a.conduce_no = otros_mov.conduce_no and cod_mov in (30,31,55)
and a.status_t IS NULL
END IF
IF cantidad_orden IS NULL THEN
LET cantidad_orden = 0
END IF
IF cantidad_conduce IS NULL THEN
LET cantidad_conduce = 0
END IF
LET movi2[idx].cantidad_p = cantidad_conduce - cantidad_orden
LET idx = idx + 1
END FOREACH
CALL set_count(idx-1)
DISPLAY ARRAY movi2 TO s_movi1.*
PROMPT "Desea Imprimir Formulario Ahora? (S/N)" FOR CHAR opt2
IF opt2 = "S" OR opt2 = "s" THEN
#LET archivo = FGL_GETENV("FGLSPOOL"),"\\ipmt44"
#START REPORT formu4 TO archivo
{START REPORT formu4 TO "C:\\archivo"}
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 formu4 TO archivo
FOR idx = 1 TO arr_count()
IF movi2[idx].cod_sec IS NOT NULL THEN
IF movi2[idx].cantidad_2 IS NOT NULL AND
movi2[idx].cantidad_2 != 0 THEN
OUTPUT TO REPORT formu4(otros_mov.*,movi2[idx].*)
END IF
END IF
END FOR
FINISH REPORT formu4
IF opt2 = "S" OR opt2 = "s" THEN
# LET filename = "TYPE ",archivo CLIPPED," > %USPRINT%"
# RUN filename
RUN imprime
END IF
END IF
CALL movi2.clear()
COMMAND "Retornar" "Retorna al menu anterior"
CLEAR FORM
EXIT MENU
END MENU
END FUNCTION
FUNCTION busca_info()
SELECT nombre INTO descrip2 FROM vetb00015
WHERE cod_transp=otros_mov.cod_transp and
sec_transp=otros_mov.sec_transp and
status_t is null
SELECT nombre INTO otros_mov.descrip4 FROM vetb00004
WHERE tipo_cliente = otros_mov.cod_sp and
sec_cliente = otros_mov.cod_sp_sec
SELECT a.descrip_mov INTO otros_mov.descrip_mov1 FROM iptb00005 a
WHERE a.cod_mov = otros_mov.cod_mov1
SELECT a.tipo_cliente,a.sec_cliente,a.cerrada,a.cotizacion_no
INTO otros_mov.cod_sp,otros_mov.cod_sp_sec,pcerrada,xcotizacion
FROM prtb00012 a
WHERE a.num_oc = otros_mov.conduce_no AND
a.status_t IS NULL
SELECT a.mensaje INTO direccion_p FROM cctb00029 a
WHERE a.num_req = pnum_req
DISPLAY BY NAME descrip2,otros_mov.descrip4,otros_mov.descrip_mov1,direccion_p
END FUNCTION
FUNCTION actualiza_st(forden)
DEFINE forden INTEGER,
prod_total,vent_total DEC(12,5),
prtb09 RECORD LIKE prtb00009.*
SELECT SUM(a.cantidad) INTO prod_total FROM prtb00013 a
WHERE a.num_oc = forden
IF STATUS = NOTFOUND THEN
LET prod_total = 0
END IF
LET vent_total = 0
SELECT SUM(b.cantidad_2) INTO vent_total
FROM IPTB00006 a
WHERE a.conduce_no = forden AND CONVERT(CHAR(10),a.fecha,101) > "31122006"
AND a.cod_sp = otros_mov.cod_sp
AND a.sec_cliente = otros_mov.cod_sp_Sec
AND a.cod_mov in (30,31,55,12,13)
AND a.status_t IS NULL
IF vent_total IS NULL THEN
LET vent_total = 0
END IF
#-> Actualiza la fecha de cierre de la orden de corte vg Wednesday, 17 January, 200112:42:33 PM
IF vent_total = prod_total THEN
UPDATE prtb00012 SET fecha_cierre = otros_mov.fecha,
cerrada = "S"
WHERE @num_oc = forden
AND @tipo_cliente = otros_mov.cod_sp
AND @sec_cliente = otros_mov.cod_sp_Sec
LET prtb09.num_oc = forden
LET prtb09.fecha = otros_mov.fecha
LET prtb09.pendiente = "N"
LET prtb09.detalle = "CIERRE DE ORDEN DE PRODUCCION SEGUN CONDUCE # ",otros_mov.num_doc USING "<<<<<<<",
" DE FECHA : ",otros_mov.fecha USING "dd/mm/yyyy"
INSERT INTO prtb00009 VALUES (prtb09.num_oc,prtb09.fecha,null,prtb09.pendiente,
prtb09.detalle,NULL,USER,getdate(),NULL,NULL)
ELSE
LET prtb09.num_oc = forden
LET prtb09.fecha = otros_mov.fecha
LET prtb09.pendiente = "N"
LET prtb09.detalle = "DESPACHO ",pdescripmov CLIPPED,
" SEGUN CONDUCE # ",otros_mov.num_doc USING "<<<<<<<",
" DE FECHA : ",otros_mov.fecha USING "dd/mm/yyyy"," CONTIENE PRODUCTO(S): ",
selec_pt CLIPPED
INSERT INTO prtb00009 VALUES (prtb09.num_oc,prtb09.fecha,null,prtb09.pendiente,
prtb09.detalle,NULL,USER,getdate(),NULL,NULL)
END IF
END FUNCTION
FUNCTION visualizacion_despacho()
DEFINE arr_autoriza_desp DYNAMIC ARRAY OF RECORD
num_oc INT,
cliente CHAR(66),
fecha CHAR(10),
tipo_cliente SMALLINT,
sec_cliente INT,
num_req INT
END RECORD
OPEN WINDOW w1 AT 10,5 WITH FORM "ipfmwd011"
DECLARE busca_autoriza CURSOR FOR
SELECT DISTINCT a.num_oc,rtrim(CAST(b.tipo_cliente AS CHAR(2)) +
'-'+CAST(b.sec_cliente AS CHAR(6)) +' '+b.nombre),
CAST (d.fecha AS CHAR(10)) AS FECHA,
b.tipo_cliente,b.sec_cliente,a.num_req
FROM cctb00026 a,vetb00004 b,prtb00012 c,cctb00025 d
WHERE c.tipo_cliente = b.tipo_cliente AND
c.sec_cliente = b.sec_cliente AND
a.num_oc = c.num_oc AND
a.cotizacion_no = c.cotizacion_no AND
c.cerrada = 'N' AND
A.num_req = d.num_req AND
d.estado in ('AUTORIZADA') AND d.estado_despacho IN ('DESPACHO PARCIAL','NO DESPACHADA') and
c.status_t is null and a.status_t IS NULL
ORDER BY fecha
LET idx = 1
FOREACH busca_autoriza INTO arr_autoriza_desp[idx].*
LET idx = idx + 1
END FOREACH
CALL set_count(idx-1)
DISPLAY ARRAY arr_autoriza_desp TO s_despachos.*
AFTER DISPLAY
LET idx = arr_curr()
IF Int_flag THEN
EXIT DISPLAY
END IF
END DISPLAY
CLOSE WINDOW w1
IF int_flag THEN
RETURN 0,0,0,0
ELSE
RETURN arr_autoriza_desp[idx].num_oc,
arr_autoriza_desp[idx].tipo_cliente,
arr_autoriza_desp[idx].sec_cliente,
arr_autoriza_desp[idx].num_req
END IF
END FUNCTION
FUNCTION existencia(pcodn,pcodgrupo,pcodtipo,pcodsec,cantidad,pid,xbodega)
DEFINE pcodn,pcodgrupo,pcodtipo,pcodsec,pid,xbodega SMALLINT,
pexistencia,pexistencia1,cantidad DEC(12,5),
verdad BOOLEAN
LET verdad = FALSE
SELECT SUM(a.cantidad_2) INTO pexistencia
FROM iptb00006 a
WHERE a.cod_n=Pcodn and
a.cod_grupo=Pcodgrupo
and a.cod_tipo=Pcodtipo and
a.cod_sec=Pcodsec AND
a.bodega = xbodega
and a.status_t IS NULL
IF pexistencia IS NULL THEN
LET pexistencia = 0
END IF
IF pexistencia1 IS NULL THEN
LET pexistencia1 = 0
END IF
IF pexistencia < 0 THEN
RETURN TRUE
END IF
IF cantidad > pexistencia THEN
RETURN TRUE
END IF
RETURN verdad
END FUNCTION
FUNCTION cetiquetas()
DEFINE ketiquetas SMALLINT, detiquetas CHAR(30)
LET petiquetas = ui.combobox.forname("formonly.etiqueta")
DECLARE betiquetas CURSOR FOR
SELECT a.codid,a.descripcion FROM vetb00026 a
ORDER BY a.descripcion
CALL petiquetas.clear()
FOREACH betiquetas INTO ketiquetas,detiquetas
CALL petiquetas.additem(ketiquetas,detiquetas)
END FOREACH
END FUNCTION
FUNCTION control_requisicion(cantidad_Trx,xcodn,xcodgrupo,xcodtipo,xcodsec,xkit)
DEFINE cantidad_Trx dec(12,5),
xcodn,xcodgrupo,xcodtipo,xcodsec SMALLINT,
xkit INT
SELECT SUM(a.cantidad) INTO cantidadRequisicion
FROM cctb00026 a
WHERE
a.cod_n = xcodn AND
a.cod_grupo = xcodgrupo AND
a.cod_tipo = xcodtipo AND
a.cod_sec = xcodsec AND
a.num_req = pnum_req AND
a.status_t IS NULL
IF cantidadrequisicion IS NULL THEN
LET cantidadrequisicion = 0
END IF
SELECT SUM(a.cantidad_2) INTO Rcantidad_requisicion
FROM iptb00006 a
WHERE
a.cod_n = xcodn AND
a.cod_grupo = xcodgrupo AND
a.cod_tipo = xcodtipo AND
a.cod_sec = xcodsec AND
a.cod_mov IN (30,31,55,12,13) and
(a.num_req = pnum_req) AND
a.status_t IS NULL
IF Rcantidad_requisicion IS NULL THEN
LET Rcantidad_requisicion=0
END IF
IF rcantidad_requisicion < 0 THEN
LET rcantidad_requisicion = rcantidad_requisicion * -1
END IF
--DISPLAY "cantidad req ",cantidadRequisicion," cantidad trx ",Rcantidad_requisicion+cantidad_Trx
IF Rcantidad_requisicion+cantidad_Trx > cantidadRequisicion+.03 THEN
RETURN FALSE
ELSE
RETURN true
END IF
END FUNCTION
FUNCTION insertaData()
DEFINE emp,codi_cia SMALLINT
DEFINE nom_cli,nombre_emp CHAR(30)
LET arr_recibo.cod_mov = otros_mov.cod_mov
LET recibo.fecha_orig = fecha1
--DISPLAY "recibo.fecha_orig ", recibo.fecha_orig
# Control Secuencial de las notas de creditos
LET recibo.fecha_orig = otros_mov.fecha
LET recibo.tipo_cliente = otros_mov.cod_sp
LET recibo.sec_cliente = otros_mov.cod_sp_sec
LET recibo.itbi = 0
LET fact_gral.bodega = otros_mov.bodega
LET reimpresion="N"
LET fecha1 = recibo.fecha_orig
# Busca el codigo del cliente y chequea que el documento de almacen exista
LET recibo.tipo_cliente=otros_mov.cod_sp
LET recibo.sec_cliente = otros_mov.cod_sp_sec
LET codi_cia=otros_mov.cod_cia
LET fact_gral.factura = otros_mov.fact_no
SET CONNECTION "SQL_C"
SELECT b.nombre,a.calle||' '||a.casa_num||' '||a.urbanizacion||' '||a.barrio,c.ventas
INTO nom_cli,fact_gral.direccion,fact_gral.ventas
FROM vetb00004 b,vetb00060 c,OUTER vetb00005 a
WHERE (b.tipo_cliente = recibo.tipo_cliente) AND
(b.sec_cliente = recibo.sec_cliente) AND
b.tipo_cliente = a.tipo_cliente AND
b.sec_cliente = a.sec_cliente AND
b.tipo_cliente = c.tipo_cliente
IF STATUS = NOTFOUND THEN
LET nom_cli = "NO E X I S T E"
END IF
LET descrip2 = null
LET descrip3 = NULL
SELECT nom1_emp,apell1_emp INTO descrip2,descrip3 FROM adtb00003
WHERE num_emp = psec_vend
--DISPLAY "descrip2 ",descrip2,"descrip3 ",descrip3
IF status = NOTFOUND THEN
LET nombre_emp = "NO E X I S T E"
ELSE
LET nombre_emp = descrip2 clipped," ",descrip3 clipped
END IF
--DISPLAY nombre_emp
LET busca1 = "S"
SELECT sum(a.cantidad_2*b.precio) INTO valor_fac
FROM iptb00006 a,vetb00003 b
WHERE (a.num_doc = otros_mov.num_doc) AND
(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.cod_mov = otros_mov.cod_mov)
AND (b.factura = CAST(a.fact_no AS INT)) AND
(b.factura = a.fact_no) AND a.area = b.area AND
(a.bodega = otros_mov.bodega)
--DISPLAY "valor_fac 1",valor_fac
LET arr_recibo.valor_pen = valor_fac
IF valor_fac IS NULL THEN
--DISPLAY "ESTA NULO "
LET busca2 = "S"
LET busca1 = "N"
SELECT SUM(a.cantidad_2*b.precio) INTO valor_fac
FROM iptb00006 a,vetb00025 b
WHERE (a.num_doc = otros_mov.num_doc) AND
(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.cod_mov = otros_mov.cod_mov) AND
a.bodega = otros_mov.bodega
AND b.ventas = "1" AND b.tipo_cliente IS NULL
END IF
LET arr_recibo.valor_pen = valor_fac
LET pdescuento = 0
# BUSCA EL DESCUENTO
SELECT SUM(a.cantidad_2 * b.precio *(b.cantidad_2/100)),AVG(b.cantidad_2)
INTO pdescuento,xporc_desc
FROM iptb00006 a,vetb00003 b
WHERE (a.num_doc = otros_mov.num_doc) AND
(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.cod_mov = otros_mov.cod_mov)
AND (b.factura = fact_gral.factura) AND a.area = b.area AND
(b.factura = a.fact_no) AND a.bodega = otros_mov.bodega
IF pdescuento IS NULL THEN
LET pdescuento = 0
END IF
LET arr_recibo.val_desc = pdescuento
LET arr_recibo.desc_p = xporc_Desc
# El campo VALOR_PEN gruarda el valor bruto de la nota de credito obtenida
# por la multiplicacion de las cantidades devueltas por el movimiento 12
# por el precio actual del producto
# LET arr_recibo[curr].val_desc = arr_recibo[curr].valor_pen * (arr_recibo[curr].desc_p / 100)
# Calcula el itbi despues de restar el descuento al monto bruto
# BUSCA PORCENTAJE ITBIS FACTURA
LET pitbis = 0
LET p_itbi = 0
DISPLAY fact_gral.factura
SELECT a.porc_itbi,a.fecha_factura INTO pitbis,fact_gral.fecha_despacho FROM vetb00002 a
WHERE a.factura = fact_gral.factura
LET dias_factura = TODAY - fact_gral.fecha_despacho
{DISPLAY "fact_gral.fecha_despacho ", fact_gral.fecha_despacho
DISPLAY "chitbis", chitbis}
IF dias_factura <= 30 THEN
LET chitbis = "S"
LET p_itbi = (arr_recibo.valor_pen - arr_recibo.val_desc) * (pitbis / 100)
LET recibo.itbi = recibo.itbi + p_itbi
DISPLAY "MENOS DE 30 ",recibo.itbi
ELSE
LET _chitbis = "N"
LET recibo.itbi = 0
DISPLAY "MAS DE 30 ",recibo.itbi
END IF
LET _chitbis = UPSHIFT(_chitbis)
LET arr_recibo.valor_pag = (arr_recibo.valor_pen - arr_recibo.val_desc) + p_itbi
LET p_total = 0
FOR idx = 1 TO arr_count()
IF arr_recibo.valor_pag IS NOT NULL THEN
LET p_total = p_total + arr_recibo.valor_pag
ELSE
LET arr_recibo.valor_pag = 0
END IF
END FOR
LET via = "S"
SELECT b.nombre,a.calle||' '||a.casa_num||' '||a.urbanizacion||' '||a.barrio
INTO nom_cli,fact_gral.direccion
FROM vetb00004 b,vetb00005 a
WHERE (b.tipo_cliente = otros_mov.cod_sp) AND
(b.sec_cliente = otros_mov.cod_sp_sec) AND
b.tipo_cliente = a.tipo_cliente AND
b.sec_cliente = a.sec_cliente
IF fact_gral.direccion IS NULL THEN
LET fact_gral.direccion = 'NO ESPECIFICADA'
END IF
LET descrip2 = NULL
LET descrip3 = NULL
SELECT nom1_emp,apell1_emp INTO descrip2,descrip3 FROM adtb00003
WHERE num_emp = psec_vend
IF STATUS = NOTFOUND THEN
LET nombre_emp = "NO E X I S T E"
ELSE
LET nombre_emp = descrip2 CLIPPED," ",descrip3 CLIPPED
END IF
#SECUENCIA RECIBO
SELECT ult_recibo INTO p_num_doc FROM cctb00003
WHERE tipo_doc = "NC"
LET p_num_doc = p_num_doc + 1
LET recibo.num_doc = p_num_doc
LET recibo.cod_emp_sec = psec_vend
IF otros_mov.num_doc IS NOT NULL THEN
LET arr_recibo.aplica_a = otros_mov.num_doc
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 cr_edito TO archivo
IF arr_recibo.aplica_a is not null THEN
INSERT INTO tmpnotascr
(num_doc
,fecha
,tipo_cliente
,sec_cliente
,cod_mov
,factura
,num_doc_nc
,itbis
,us_crea
,fech_crea)
VALUES
(arr_recibo.aplica_a
,otros_mov.fecha
,otros_mov.cod_sp
,otros_mov.cod_sp_sec
,otros_mov.cod_mov
,otros_mov.fact_no
,recibo.num_doc
,recibo.itbi
,usuarios
,getdate())
OUTPUT TO REPORT cr_edito (recibo.*,arr_recibo.*,nom_cli,
descrip2,descrip3,codi_cia)
END IF
FINISH REPORT cr_edito
RUN imprime
# IMPRESION EXTERIOR
CALL defecto(usuarios,clave,impresor1) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia
SET CONNECTION "SQL_E"
SELECT a.factura INTO fact_gral.factura FROM vetb00002 a WHERE a.factura_c =otros_mov.fact_no
IF STATUS <> NOTFOUND THEN
IF num_doc_e >0 THEN
LET num_cr_e = recibo.num_doc
SELECT a.ult_recibo INTO p_num_doc FROM cctb00003 a WHERE a.tipo_Doc = 'NC'
IF p_num_doc IS NULL THEN
INSERT INTO cctb00003 (ult_recibo,tipo_doc) VALUES (1,'NC')
LET p_num_doc = 1
END IF
LET recibo.num_doc = p_num_doc + 1
START REPORT cr_edito1 TO archivo
LET arr_recibo.aplica_a=num_doc_e
IF arr_recibo.aplica_a is not null THEN
INSERT INTO tmpnotascr
(num_doc
,fecha
,tipo_cliente
,sec_cliente
,cod_mov
,factura
,num_doc_nc
,itbis
,us_crea
,fech_crea)
VALUES
(arr_recibo.aplica_a
,otros_mov.fecha
,otros_mov.cod_sp
,otros_mov.cod_sp_sec
,otros_mov.cod_mov
,otros_mov.fact_no
,recibo.num_doc
,recibo.itbi
,usuarios
,getdate())
OUTPUT TO REPORT cr_edito1 (recibo.*,arr_recibo.*,nom_cli,
descrip2,descrip3,codi_cia)
END IF
FINISH REPORT cr_edito1
RUN imprime
END IF
END IF
END IF
SET CONNECTION "SQL_C"
LET emp = psec_vend
END FUNCTION
REPORT cr_edito(x,z,nombre_cli,nombre,apellido,cia)
DEFINE x RECORD
num_doc LIKE cctb00001.num_doc,
tipo_cliente LIKE cctb00001.tipo_cliente,
sec_cliente LIKE cctb00001.sec_cliente,
cod_emp_sec LIKE cctb00001.cod_emp_sec,
fecha_orig LIKE cctb00001.fecha_orig ,
itbi DECIMAL(12,2),
concepto CHAR(60)
END RECORD
DEFINE z RECORD
cod_mov LIKE iptb00006.cod_mov,
aplica_a LIKE cctb00001.aplica_a,
valor_pen DECIMAL(12,2),
desc_p LIKE cctb00001.monto_desc,
valor_desc DECIMAL(12,2),
valor_pag DECIMAL(12,2)
END RECORD
DEFINE cia SMALLINT
DEFINE total_nc,total_bruto,sub_total,total_desc,itbis DECIMAL(12,2)
DEFINE nombre_cli,nombre,apellido CHAR(30)
DEFINE comp_on,comp_off,negrillas_on,negrillas_off,doble_on,doble_off,
doce,normal CHAR(2)
DEFINE reg_i RECORD
area SMALLINT,
cod_n INTEGER,
cod_grupo INTEGER,
cod_tipo INTEGER,
cod_sec INTEGER,
descrip_esp CHAR(100),
cantidad DEC(18,5),
precio DECIMAL(12,2),
descuento DEC(12,2)
END RECORD,
lj,j,i,h SMALLINT,
factura_ncf INT,
xtipo_doc CHAR(2)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 4
# PAGE LENGTH 33
ORDER BY x.num_doc
FORMAT
BEFORE GROUP OF x.num_doc
LET negrillas_on = ASCII 27, ASCII 69
LET negrillas_off = ASCII 27, ASCII 70
LET doce = ASCII 27, ASCII 77
LET normal = ASCII 27, ASCII 80
LET doble_on = ASCII 14
LET doble_off = ASCII 20
LET comp_off = ASCII 18
LET comp_on = ASCII 15
LET lj = (80 - LENGTH(p_companias.nombre CLIPPED))/2
LET j = (90 - LENGTH(p_companias.direccion CLIPPED))/2
LET i = (90 - LENGTH(p_companias.telefono CLIPPED))/2
LET h = (90 - LENGTH(p_companias.rnc CLIPPED))/2
PRINT comp_on
PRINT COLUMN lj, normal,doble_on,p_companias.nombre CLIPPED
PRINT COLUMN j+3, p_companias.direccion
PRINT COLUMN i-9, "Tels : ",p_companias.telefono ,
" Fax : ",p_companias.fax
PRINT COLUMN h-1, "RNC : ",p_companias.rnc CLIPPED,
COLUMN 100, "Pag. ", pageno using "###"
PRINT COLUMN h, "NOTAS DE CREDITOS"
IF reimpresion = "S" THEN
PRINT COLUMN i,"RE-IMPRESION"
ELSE
PRINT " "
END IF
PRINT negrillas_on
LET total_bruto = 0
LET total_Desc = 0
PRINT COLUMN 1, "Numero : ",doble_on,x.num_doc using "&&&&&&",doble_off,
negrillas_off
PRINT COLUMN 1, "CLiente : ",x.tipo_cliente using "&&","-",x.sec_cliente
using "&&&&&&&&"," ",nombre_cli
PRINT COLUMN 1, "Direccion: ",fact_gral.direccion
PRINT COLUMN 1, "Vendedor : ",x.cod_emp_sec using "&&&&"," ",nombre clipped,",",
apellido
PRINT COLUMN 1, "Fecha : ",x.fecha_orig using "dd/mm/yy",negrillas_on
PRINT COLUMN 1, "Doc. Dev : ",z.aplica_a USING "&&&&&&"," Factura : ",fact_gral.factura USING "&&&&&&"
PRINT COLUMN 1, "Bodega : ",xbodega
PRINT COLUMN 1, "Concepto : ",x.concepto CLIPPED
PRINT COLUMN 1,"-----------------------------------------------------------",
"------------------------------------------"
PRINT COLUMN 1, "Producto",
COLUMN 53, "Cantidad",
COLUMN 64, "Precio",
COLUMN 74, "%Desc",
COLUMN 86, "Valor Desc",
COLUMN 97, "Total"
PRINT COLUMN 1,"-----------------------------------------------------------",
"------------------------------------------"
PRINT COLUMN 1, negrillas_off
AFTER GROUP OF x.num_doc
IF busca1 = "S" THEN
# DISPLAY "bodega ",fact_gral.bodega," COD_MOV ",z.cod_mov," aplica ",z.aplica_a
DECLARE venta1 CURSOR FOR
SELECT DISTINCT a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.descrip_esp,
SUM(a.cantidad_2),c.precio,avg(c.cantidad_2)
FROM iptb00006 a, iptb00002 b, vetb00003 c
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.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
CAST(a.fact_no AS INT) = c.factura AND a.cod_mov = z.cod_mov AND
a.num_doc = z.aplica_a AND a.area = c.area AND a.bodega = fact_gral.bodega
GROUP BY a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.descrip_esp,c.precio
ORDER BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec
END IF
IF busca2 = "S" THEN
DECLARE venta2 CURSOR FOR
SELECT DISTINCT a.area, a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,
c.descrip_esp,SUM(a.cantidad_2),b.precio,'0'
FROM iptb00006 a,vetb00025 b,iptb00002 c
WHERE (a.num_doc = z.aplica_a) and
(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.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
(a.cod_mov = z.cod_mov) AND a.bodega = fact_gral.bodega
and b.ventas = "1" and b.tipo_cliente is null
GROUP BY a.area, a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.precio, c.descrip_esp
END IF
LET total_bruto = 0
LET salir = "N"
IF busca1 = "S" THEN
FOREACH venta1 INTO reg_i.area,reg_i.cod_n,reg_i.cod_grupo,reg_i.cod_tipo,reg_i.cod_sec,reg_i.descrip_esp,
reg_i.cantidad,reg_i.precio,reg_i.descuento
IF reg_i.cantidad IS NULL THEN
LET reg_i.cantidad = 0
END IF
IF reg_i.precio IS NULL THEN
LET reg_i.precio = 0
END IF
LET total_bruto = total_bruto + (reg_i.cantidad * reg_i.precio)
LET pdescuento = (reg_i.cantidad * reg_i.precio) * (reg_i.descuento/100)
LET total_desc = pdescuento + total_desc
PRINT COLUMN 1,reg_i.area," ", reg_i.cod_n USING "&&&&",'-',reg_i.cod_grupo USING "&&&&","-",
reg_i.cod_tipo USING "&&&","-",reg_i.cod_sec USING "&&&&",
" ",reg_i.descrip_esp WORDWRAP RIGHT MARGIN 45,
COLUMN 40, reg_i.cantidad USING "###,###.#####",
2 spaces, reg_i.precio USING "##,###.##",
2 spaces, reg_i.descuento USING "##,###.##",
2 spaces, pdescuento USING "###,###.##",
COLUMN 88, reg_i.cantidad * reg_i.precio USING "###,###,###.##"
IF reimpresion = "N" THEN
INSERT INTO cctb00004 (tipo_Doc,num_Doc,cod_n,cod_grupo,cod_tipo,cod_sec,cantidad,precio,descuento,cod_mov,num_doc_almacen,bodega,
porc_Desc)
VALUES ('NC',x.num_doc,reg_i.cod_n,reg_i.cod_grupo,reg_i.cod_tipo,reg_i.cod_sec,reg_i.cantidad,reg_i.precio,pdescuento,
z.cod_mov,z.aplica_a,fact_gral.bodega,reg_i.descuento)
END IF
END FOREACH
END IF
IF busca2 = "S" THEN
FOREACH venta2 INTO reg_i.area,reg_i.cod_n,reg_i.cod_grupo,reg_i.cod_tipo,reg_i.cod_sec,reg_i.descrip_esp,
reg_i.cantidad,reg_i.precio,reg_i.descuento
IF reg_i.cantidad IS NULL THEN
LET reg_i.cantidad = 0
END IF
IF reg_i.precio IS NULL THEN
LET reg_i.precio = 0
END IF
LET pdescuento = (reg_i.cantidad * reg_i.precio) * (reg_i.descuento/100)
LET total_desc = pdescuento + total_desc
#LET reg_i.descuento = pdescuento
IF reimpresion = "N" THEN
LET total_bruto = total_bruto + (reg_i.cantidad * reg_i.precio)
ELSE
LET total_bruto = ptotalb
END IF
PRINT COLUMN 1, reg_i.cod_n USING "&&&&",'-',reg_i.cod_grupo USING "&&&&","-",
reg_i.cod_tipo USING "&&&&","-",reg_i.cod_sec USING "&&&&",
" ",reg_i.descrip_esp WORDWRAP RIGHT MARGIN 45,
COLUMN 40, reg_i.cantidad USING "###,###.####",
2 spaces, reg_i.precio USING "##,###.##",
2 spaces, reg_i.descuento USING "##,###.##",
2 spaces, pdescuento USING "###,###.##",
COLUMN 88, (reg_i.cantidad * reg_i.precio) - pdescuento
USING "###,###,###.##"
IF reimpresion = "N" THEN
INSERT INTO cctb00004 (tipo_Doc,num_Doc,cod_n,cod_grupo,cod_tipo,cod_sec,cantidad,precio,descuento,cod_mov,num_doc_almacen,bodega,
porc_Desc)
VALUES ('NC',x.num_doc,reg_i.cod_n,reg_i.cod_grupo,reg_i.cod_tipo,reg_i.cod_sec,reg_i.cantidad,reg_i.precio,pdescuento,
z.cod_mov,z.aplica_a,fact_gral.bodega,reg_i.descuento)
END IF
END FOREACH
END IF
IF reimpresion ="S" THEN
DECLARE busca_codigos CURSOR FOR
SELECT a.cod_n,a.cod_Grupo,a.cod_tipo,a.cod_sec,b.descrip_esp,a.cantidad,a.precio,a.porc_desc
FROM cctb00004 a,iptb00002 b
WHERE a.tipo_doc = 'NC' AND a.num_doc = x.num_doc AND
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
LET total_Desc = 0
LET total_bruto = 0
FOREACH busca_codigos INTO reg_i.cod_n,reg_i.cod_grupo,reg_i.cod_tipo,reg_i.cod_sec,reg_i.descrip_esp,
reg_i.cantidad,reg_i.precio,reg_i.descuento
IF reg_i.cantidad IS NULL THEN
LET reg_i.cantidad = 0
END IF
IF reg_i.precio IS NULL THEN
LET reg_i.precio = 0
END IF
LET pdescuento = (reg_i.cantidad * reg_i.precio) * (reg_i.descuento/100)
LET total_desc = pdescuento + total_desc
LET total_bruto = total_bruto + (reg_i.cantidad * reg_i.precio)
PRINT COLUMN 1, reg_i.cod_n USING "&&&&",'-',reg_i.cod_grupo USING "&&&&","-",
reg_i.cod_tipo USING "&&&&","-",reg_i.cod_sec USING "&&&&",
" ",reg_i.descrip_esp WORDWRAP RIGHT MARGIN 45,
COLUMN 40, reg_i.cantidad USING "###,###.####",
2 spaces, reg_i.precio USING "##,###.##",
2 spaces, pdescuento USING "##,###.##",
COLUMN 88, (reg_i.cantidad * reg_i.precio) - pdescuento USING "###,###,###.##"
END FOREACH
END IF
IF z.valor_desc IS NULL THEN
LET z.valor_desc = 0
END IF
IF pitbis IS NULL THEN LET pitbis = 0 END IF
IF x.itbi IS NULL THEN LET x.itbi = 0 END IF
DISPLAY "1", x.itbi
IF reimpresion = "N" THEN
IF chitbis ="S" THEN
LET x.itbi = (total_bruto - total_desc) * (pitbis/100)
DISPLAY "2", x.itbi
ELSE
LET x.itbi = 0
DISPLAY "3", x.itbi
END IF
END IF
PRINT COLUMN 88, "--------------"
PRINT COLUMN 60, " BRUTO : ",
COLUMN 88, total_bruto USING "###,###,###.##"
PRINT COLUMN 60, " DESC : ",
COLUMN 88, total_Desc using "---,---,###.##"
PRINT COLUMN 60, "SUB-TOTAL : ",
COLUMN 88, (total_bruto - total_desc) USING "---,---,###.##"
PRINT COLUMN 60, " ITBIS : ",pitbis USING "<<<.##","% : ",
COLUMN 88, x.itbi using "---,---,###.##"
PRINT COLUMN 60, " NETO : ",
COLUMN 88, total_bruto - total_desc + x.itbi USING "---,---,###.##"
LET total_nc = (total_bruto + x.itbi)
IF z.valor_desc IS NULL THEN
LET z.valor_desc = 0
END IF
IF x.itbi IS NULL THEN
LET x.itbi = 0
DISPLAY "4", x.itbi
END IF
{
ACTUALIZACION DE LA TABLA DE CUENTAS POR COBRAR
===============================================
VALOR NETO (total_nc) SE GUARDA EN EL CAMPO: valor,
ITBI (x.itbi) SE GUARDA EN EL CAMPO: valor_efectivo,
EL VALOR BRUTO (total_bruto) SE GUARDA EN EN CAMPO: valor_cheque,
MONTO DE DESCUENTO(total_desc) EN EL CAMPO: monto_desc
EL CAMPO NUM_CHEQUE SE UTILIZA PARA EL NUMERO DE DOCUMENTOS
DE INVENTARIO DEL MOVIMIENTO 12 DE PRODUCTO TERMINADOS}
IF reimpresion= "N" THEN
IF _chitbis = 'YES' THEN
LET _chitbis = 'SI'
ELSE
LET _chitbis = 'NO'
END IF
SELECT a.ult_recibo INTO p_num_doc FROM cctb00003 a WHERE a.tipo_Doc = 'NC'
IF p_num_doc IS NULL THEN
INSERT INTO cctb00003 (ult_recibo,tipo_doc) VALUES (1,'NC')
LET p_num_doc = 1
END IF
LET x.num_doc = p_num_doc + 1
{ INSERT INTO cctb00011 (num_doc,tipo_doc,tipo_cliente,sec_cliente,comentario,chitbis,bodega,porc_itbis,valor_recibo,descuento,
monto_itbis,valor_bruto,sucid)
VALUES (x.num_doc,"NC",x.tipo_cliente,x.sec_cliente,otros_mov.detalle,chitbis,fact_gral.bodega,pitbis,total_nc,
total_desc,x.itbi,total_bruto,psucid)
}
INSERT INTO cctb00011 (num_doc,tipo_doc,tipo_cliente,sec_cliente,comentario,chitbis,bodega,porc_itbis)
VALUES (x.num_doc,"NC",x.tipo_cliente,x.sec_cliente,otros_mov.detalle,chitbis,fact_gral.bodega,pitbis)
LET total_nc = total_nc * -1
LET total_bruto = total_bruto * -1
IF fact_gral.ventas = '1' THEN
LET xtipo_doc ='FT'
ELSE
LET xtipo_Doc = 'FE'
END IF
IF total_nc > 0 THEN
LET total_nc = total_nc *-1
END IF
INSERT INTO cctb00001 (cod_cia,tipo_doc,num_doc,tipo_cliente,sec_cliente,cod_emp_sec,fecha_orig,
aplica_a,banco,num_cheque,
valor,valor_efectivo,valor_cheque,monto_desc,
us_crea,fech_crea,bodega,tipo_doc_aplica,cod_emp,num_oc,documento_ref )
VALUES
(cia,"NC",x.num_doc,x.tipo_cliente,
x.sec_cliente,x.cod_emp_sec,x.fecha_orig,
fact_gral.factura,z.cod_mov,z.aplica_a,
total_nc, x.itbi, total_bruto, total_desc,
usuarios,GETDATE(),fact_gral.bodega,xtipo_doc,psucid,ordenx,xcotizacion)
UPDATE cctb00003 SET ult_recibo = x.num_doc WHERE tipo_Doc = 'NC'
END IF
PRINT normal
PAGE TRAILER
SKIP 1 LINE
PRINT COLUMN 6, " Preparado Por",
COLUMN 40, " Autorizado Por"
PRINT " "
PRINT COLUMN 6, "---------------------------",
COLUMN 36, "---------------------------"
ON LAST ROW
IF reimpresion = "N" THEN
UPDATE cctb00003 set ult_recibo = x.num_doc,
us_crea = SUSER_SNAME(),
fech_crea = GETDATE(),
us_mod = SUSER_SNAME(),
fech_mod = GETDATE()
WHERE tipo_doc in ("NC")
END IF
END REPORT
REPORT cr_edito1(x,z,nombre_cli,nombre,apellido,cia)
DEFINE x RECORD
num_doc LIKE cctb00001.num_doc,
tipo_cliente LIKE cctb00001.tipo_cliente,
sec_cliente LIKE cctb00001.sec_cliente,
cod_emp_sec LIKE cctb00001.cod_emp_sec,
fecha_orig LIKE cctb00001.fecha_orig ,
itbi DECIMAL(12,2),
concepto CHAR(60)
END RECORD
DEFINE z RECORD
cod_mov LIKE iptb00006.cod_mov,
aplica_a LIKE cctb00001.aplica_a,
valor_pen DECIMAL(12,2),
desc_p LIKE cctb00001.monto_desc,
valor_desc DECIMAL(12,2),
valor_pag DECIMAL(12,2)
END RECORD
DEFINE cia SMALLINT
DEFINE total_nc,total_bruto,sub_total,total_desc,itbis DECIMAL(12,2)
DEFINE nombre_cli,nombre,apellido CHAR(30)
DEFINE comp_on,comp_off,negrillas_on,negrillas_off,doble_on,doble_off,
doce,normal CHAR(2)
DEFINE reg_i RECORD
area SMALLINT,
cod_n INTEGER,
cod_grupo INTEGER,
cod_tipo INTEGER,
cod_sec INTEGER,
descrip_esp CHAR(100),
cantidad DEC(18,5),
precio DECIMAL(12,2),
descuento DEC(12,2)
END RECORD,
lj,j,i,h SMALLINT,
factura_ncf INT,
xtipo_doc CHAR(2),
codigodgii VARCHAR(10),
ult_ncf,num_ncf INT,
descripcion_ncf VARCHAR(100)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 4
# PAGE LENGTH 33
ORDER BY x.num_doc
FORMAT
BEFORE GROUP OF x.num_doc
LET negrillas_on = ASCII 27, ASCII 69
LET negrillas_off = ASCII 27, ASCII 70
LET doce = ASCII 27, ASCII 77
LET normal = ASCII 27, ASCII 80
LET doble_on = ASCII 14
LET doble_off = ASCII 20
LET comp_off = ASCII 18
LET comp_on = ASCII 15
LET lj = (80 - LENGTH(p_companias.nombre CLIPPED))/2
LET j = (90 - LENGTH(p_companias.direccion CLIPPED))/2
LET i = (90 - LENGTH(p_companias.telefono CLIPPED))/2
LET h = (90 - LENGTH(p_companias.rnc CLIPPED))/2
PRINT comp_on
PRINT COLUMN lj, normal,doble_on,p_companias.nombre CLIPPED
PRINT COLUMN j+3, p_companias.direccion
PRINT COLUMN i-9, "Tels : ",p_companias.telefono ,
" Fax : ",p_companias.fax
PRINT COLUMN h-1, "RNC : ",p_companias.rnc CLIPPED,
COLUMN 100, "Pag. ", pageno using "###"
PRINT COLUMN h, "NOTAS DE CREDITOS"
IF reimpresion = "S" THEN
PRINT COLUMN i,"RE-IMPRESION"
ELSE
PRINT " "
END IF
PRINT negrillas_on
LET total_bruto = 0
LET total_Desc = 0
#BUSCA EL NCF DE LA NC
SELECT a.codigo_dgii,a.tipo_ncf INTO codigodgii,descripcion_ncf FROM vetb00071 a
WHERE a.tipo_doc ='NC' and a.disponible = "S" AND
a.sucid = 1
SELECT a.ncf INTO ult_ncf FROM vetb00073 a
WHERE a.tipo_doc = 'NC' AND a.codigo_dgii=codigodgii AND a.sucid=1
IF ult_ncf IS NOT NULL THEN
LET num_ncf = ult_ncf + 1
END IF
PRINT COLUMN 1, "Numero : ",doble_on,x.num_doc using "&&&&&&",doble_off,
negrillas_off
PRINT COLUMN 1, "CLiente : ",x.tipo_cliente using "&&","-",x.sec_cliente
using "&&&&&&&&"," ",nombre_cli
PRINT COLUMN 1, "Direccion: ",fact_gral.direccion
PRINT COLUMN 1, "Vendedor : ",x.cod_emp_sec using "&&&&"," ",nombre clipped,",",
apellido
PRINT COLUMN 1, "Fecha : ",x.fecha_orig using "dd/mm/yy",negrillas_on
PRINT COLUMN 1, "Doc. Dev : ",z.aplica_a USING "&&&&&&"," Factura : ",fact_gral.factura USING "&&&&&&"
PRINT COLUMN 1, "Bodega : ",xbodega
PRINT COLUMN 1, "NCF : ",codigodgii CLIPPED,num_ncf USING "&&&&&&&&"
PRINT COLUMN 1, "Concepto : ",x.concepto CLIPPED
PRINT COLUMN 1,"-----------------------------------------------------------",
"------------------------------------------"
PRINT COLUMN 1, "Producto",
COLUMN 53, "Cantidad",
COLUMN 64, "Precio",
COLUMN 74, "%Desc",
COLUMN 86, "Valor Desc",
COLUMN 97, "Total"
PRINT COLUMN 1,"-----------------------------------------------------------",
"------------------------------------------"
PRINT COLUMN 1, negrillas_off
AFTER GROUP OF x.num_doc
IF busca1 = "S" THEN
# DISPLAY "bodega ",fact_gral.bodega," COD_MOV ",z.cod_mov," aplica ",z.aplica_a
DECLARE venta11 CURSOR FOR
SELECT DISTINCT a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.descrip_esp,
SUM(a.cantidad_2),c.precio,avg(c.cantidad_2)
FROM iptb00006 a, iptb00002 b, vetb00003 c
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.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
CAST(a.fact_no AS INT) = c.factura AND a.cod_mov = z.cod_mov AND
a.num_doc = z.aplica_a AND a.area = c.area
GROUP BY a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.descrip_esp,c.precio
ORDER BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec
END IF
IF busca2 = "S" THEN
DECLARE venta21 CURSOR FOR
SELECT DISTINCT a.area, a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,
c.descrip_esp,SUM(a.cantidad_2),b.precio,'0'
FROM iptb00006 a,vetb00025 b,iptb00002 c
WHERE (a.num_doc = z.aplica_a) and
(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.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
(a.cod_mov = z.cod_mov)
and b.ventas = "1" and b.tipo_cliente is null
GROUP BY a.area, a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.precio, c.descrip_esp
END IF
LET total_bruto = 0
LET salir = "N"
IF busca1 = "S" THEN
FOREACH venta11 INTO reg_i.area,reg_i.cod_n,reg_i.cod_grupo,reg_i.cod_tipo,reg_i.cod_sec,reg_i.descrip_esp,
reg_i.cantidad,reg_i.precio,reg_i.descuento
IF reg_i.cantidad IS NULL THEN
LET reg_i.cantidad = 0
END IF
IF reg_i.precio IS NULL THEN
LET reg_i.precio = 0
END IF
LET total_bruto = total_bruto + (reg_i.cantidad * reg_i.precio)
LET pdescuento = (reg_i.cantidad * reg_i.precio) * (reg_i.descuento/100)
LET total_desc = pdescuento + total_desc
PRINT COLUMN 1,reg_i.area," ", reg_i.cod_n USING "&&&&",'-',reg_i.cod_grupo USING "&&&&","-",
reg_i.cod_tipo USING "&&&","-",reg_i.cod_sec USING "&&&&",
" ",reg_i.descrip_esp WORDWRAP RIGHT MARGIN 45,
COLUMN 40, reg_i.cantidad USING "###,###.#####",
2 spaces, reg_i.precio USING "##,###.##",
2 spaces, reg_i.descuento USING "##,###.##",
2 spaces, pdescuento USING "###,###.##",
COLUMN 88, reg_i.cantidad * reg_i.precio USING "###,###,###.##"
IF reimpresion = "N" THEN
INSERT INTO cctb00010 (tipo_Doc,num_Doc,cod_n,cod_grupo,cod_tipo,cod_sec,cantidad,precio,descuento,cod_mov,num_doc_almacen,bodega,
porc_Desc)
VALUES ('NC',x.num_doc,reg_i.cod_n,reg_i.cod_grupo,reg_i.cod_tipo,reg_i.cod_sec,reg_i.cantidad,reg_i.precio,pdescuento,
z.cod_mov,z.aplica_a,fact_gral.bodega,reg_i.descuento)
END IF
END FOREACH
END IF
IF busca2 = "S" THEN
FOREACH venta21 INTO reg_i.area,reg_i.cod_n,reg_i.cod_grupo,reg_i.cod_tipo,reg_i.cod_sec,reg_i.descrip_esp,
reg_i.cantidad,reg_i.precio,reg_i.descuento
IF reg_i.cantidad IS NULL THEN
LET reg_i.cantidad = 0
END IF
IF reg_i.precio IS NULL THEN
LET reg_i.precio = 0
END IF
LET pdescuento = (reg_i.cantidad * reg_i.precio) * (reg_i.descuento/100)
LET total_desc = pdescuento + total_desc
#LET reg_i.descuento = pdescuento
IF reimpresion = "N" THEN
LET total_bruto = total_bruto + (reg_i.cantidad * reg_i.precio)
ELSE
LET total_bruto = ptotalb
END IF
PRINT COLUMN 1, reg_i.cod_n USING "&&&&",'-',reg_i.cod_grupo USING "&&&&","-",
reg_i.cod_tipo USING "&&&&","-",reg_i.cod_sec USING "&&&&",
" ",reg_i.descrip_esp WORDWRAP RIGHT MARGIN 45,
COLUMN 40, reg_i.cantidad USING "###,###.####",
2 spaces, reg_i.precio USING "##,###.##",
2 spaces, reg_i.descuento USING "##,###.##",
2 spaces, pdescuento USING "###,###.##",
COLUMN 88, (reg_i.cantidad * reg_i.precio) - pdescuento
USING "###,###,###.##"
IF reimpresion = "N" THEN
INSERT INTO cctb00004 (tipo_Doc,num_Doc,cod_n,cod_grupo,cod_tipo,cod_sec,cantidad,precio,descuento,cod_mov,num_doc_almacen,bodega,
porc_Desc)
VALUES ('NC',x.num_doc,reg_i.cod_n,reg_i.cod_grupo,reg_i.cod_tipo,reg_i.cod_sec,reg_i.cantidad,reg_i.precio,pdescuento,
z.cod_mov,z.aplica_a,fact_gral.bodega,reg_i.descuento)
END IF
END FOREACH
END IF
IF reimpresion ="S" THEN
DECLARE busca_codigos1 CURSOR FOR
SELECT a.cod_n,a.cod_Grupo,a.cod_tipo,a.cod_sec,b.descrip_esp,a.cantidad,a.precio,a.porc_desc
FROM cctb00004 a,iptb00002 b
WHERE a.tipo_doc = 'NC' AND a.num_doc = x.num_doc AND
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
LET total_Desc = 0
LET total_bruto = 0
FOREACH busca_codigos1 INTO reg_i.cod_n,reg_i.cod_grupo,reg_i.cod_tipo,reg_i.cod_sec,reg_i.descrip_esp,
reg_i.cantidad,reg_i.precio,reg_i.descuento
IF reg_i.cantidad IS NULL THEN
LET reg_i.cantidad = 0
END IF
IF reg_i.precio IS NULL THEN
LET reg_i.precio = 0
END IF
LET pdescuento = (reg_i.cantidad * reg_i.precio) * (reg_i.descuento/100)
LET total_desc = pdescuento + total_desc
LET total_bruto = total_bruto + (reg_i.cantidad * reg_i.precio)
PRINT COLUMN 1, reg_i.cod_n USING "&&&&",'-',reg_i.cod_grupo USING "&&&&","-",
reg_i.cod_tipo USING "&&&&","-",reg_i.cod_sec USING "&&&&",
" ",reg_i.descrip_esp WORDWRAP RIGHT MARGIN 45,
COLUMN 40, reg_i.cantidad USING "###,###.####",
2 spaces, reg_i.precio USING "##,###.##",
2 spaces, pdescuento USING "##,###.##",
COLUMN 88, (reg_i.cantidad * reg_i.precio) - pdescuento USING "###,###,###.##"
END FOREACH
END IF
IF z.valor_desc IS NULL THEN
LET z.valor_desc = 0
END IF
IF pitbis IS NULL THEN LET pitbis = 0 END IF
IF x.itbi IS NULL THEN LET x.itbi = 0 END IF
--_chitbis
IF reimpresion = "N" THEN
IF chitbis ="S" THEN
LET x.itbi = (total_bruto - total_desc) * (pitbis/100)
ELSE
LET x.itbi = 0
END IF
END IF
PRINT COLUMN 88, "--------------"
PRINT COLUMN 60, " BRUTO : ",
COLUMN 88, total_bruto USING "###,###,###.##"
PRINT COLUMN 60, " DESC : ",
COLUMN 88, total_Desc using "---,---,###.##"
PRINT COLUMN 60, "SUB-TOTAL : ",
COLUMN 88, (total_bruto - total_desc) USING "---,---,###.##"
PRINT COLUMN 60, " ITBIS : ",pitbis USING "<<<.##","% : ",
COLUMN 88, x.itbi using "---,---,###.##"
PRINT COLUMN 60, " NETO : ",
COLUMN 88, total_bruto - total_desc + x.itbi USING "---,---,###.##"
LET total_nc = (total_bruto + x.itbi)
IF z.valor_desc IS NULL THEN
LET z.valor_desc = 0
END IF
IF x.itbi IS NULL THEN
LET x.itbi = 0
END IF
{
ACTUALIZACION DE LA TABLA DE CUENTAS POR COBRAR
===============================================
VALOR NETO (total_nc) SE GUARDA EN EL CAMPO: valor,
ITBI (x.itbi) SE GUARDA EN EL CAMPO: valor_efectivo,
EL VALOR BRUTO (total_bruto) SE GUARDA EN EN CAMPO: valor_cheque,
MONTO DE DESCUENTO(total_desc) EN EL CAMPO: monto_desc
EL CAMPO NUM_CHEQUE SE UTILIZA PARA EL NUMERO DE DOCUMENTOS
DE INVENTARIO DEL MOVIMIENTO 12 DE PRODUCTO TERMINADOS}
IF reimpresion= "N" THEN
IF _chitbis = 'YES' THEN
LET _chitbis = 'SI'
ELSE
LET _chitbis = 'NO'
END IF
BEGIN WORK
INSERT INTO cctb00011 (num_doc,tipo_doc,tipo_cliente,sec_cliente,comentario,chitbis,bodega,porc_itbis,valor_recibo,descuento,
monto_itbis,valor_bruto,sucid)
VALUES (x.num_doc,"NC",x.tipo_cliente,x.sec_cliente,otros_mov.detalle,chitbis,fact_gral.bodega,pitbis,total_nc,
total_desc,x.itbi,total_bruto,psucid)
LET total_nc = total_nc * -1
LET total_bruto = total_bruto * -1
IF fact_gral.ventas = '1' THEN
LET xtipo_doc ='FT'
ELSE
LET xtipo_Doc = 'FE'
END IF
IF num_ncf >0 THEN
UPDATE vetb00073 SET ncf = num_ncf WHERE tipo_doc = 'NC' AND codigo_dgii = codigodgii AND sucid=1
INSERT INTO vetb00072 (documento,tipo_doc,codigo_dgii,ncf,us_crea,fech_crea,sucid)
VALUES (x.num_doc,'NC',codigodgii,num_ncf,usuarios,getdate(),psucid)
END IF
IF total_nc > 0 THEN
LET total_nc = total_nc *-1
END IF
INSERT INTO cctb00001 (cod_cia,tipo_doc,num_doc,tipo_cliente,sec_cliente,cod_emp_sec,fecha_orig,
aplica_a,banco,num_cheque,
valor,valor_efectivo,valor_cheque,monto_desc,
us_crea,fech_crea,bodega,tipo_doc_aplica,cod_emp,sucid,localidad_aplica_a,
num_oc,documento_ref,num_doc_c )
VALUES (cia,"NC",x.num_doc,x.tipo_cliente,
x.sec_cliente,x.cod_emp_sec,x.fecha_orig,
fact_gral.factura,z.cod_mov,z.aplica_a,
total_nc,x.itbi,total_bruto,total_desc,
usuarios,GETDATE(),fact_gral.bodega,xtipo_doc,psucid,psucid,psucid,ordenx,
xcotizacion,num_cr_e)
UPDATE cctb00003 SET ult_recibo = x.num_doc WHERE tipo_Doc = 'NC'
IF ult_ncf IS NULL THEN
ROLLBACK WORK
ELSE
COMMIT WORK
END IF
END IF
PRINT NORMAL
PAGE TRAILER
SKIP 1 LINE
PRINT COLUMN 6, " Preparado Por",
COLUMN 40, " Autorizado Por"
PRINT " "
PRINT COLUMN 6, "---------------------------",
COLUMN 36, "---------------------------"
ON LAST ROW
IF reimpresion = "N" THEN
UPDATE cctb00003 set ult_recibo = x.num_doc,
us_crea = SUSER_SNAME(),
fech_crea = GETDATE(),
us_mod = SUSER_SNAME(),
fech_mod = GETDATE()
WHERE tipo_doc in ("NC")
END IF
END REPORT
FUNCTION integridad()
IF sqlca.sqlcode < 0 THEN
LET numero_msg = sqlca.sqlcode
CALL msg(numero_msg)
DISPLAY numero_msg AT 23,70
LET bandera = 1
LET status = 0
SLEEP 2
RETURN
END IF
RETURN
END FUNCTION
FUNCTION repetir1()
DEFINE ant_art RECORD
aplica_a INTEGER,
valor_pag INTEGER
END RECORD
LET ant_art.aplica_a = otros_mov.num_doc --CHEQUEAR SI ES FACTURA
LET ant_art.valor_pag = arr_recibo.valor_pag
--FOR idx = 1 to arr_count()
--IF idx != curr THEN
IF arr_recibo.aplica_a IS NOT NULL AND arr_recibo.valor_pag IS NOT NULL THEN
IF arr_recibo.aplica_a = ant_art.aplica_a AND arr_recibo.valor_pag = ant_art.valor_pag THEN
--LET numero_msg = 21
--CALL msg(numero_msg)
LET bandera = 1
ELSE
IF bandera != 1 THEN
LET bandera = 0
END IF
END IF
END IF
--END IF
--END FOR
DISPLAY "REPITIENDO bandera", bandera
END FUNCTION
FUNCTION prod()
LET a_ano = year(p_fechas)
LET mes_control = MONTH(today)
LET mes_calc = mes_control
IF mes_calc = 01 THEN
LET mes_calc = 13
LET a_ano = year(today - 32)
END IF
--Aqui la funcion se posicionaba en dos meses
--para el control del documento
LET mes_calc = mes_calc - 2
IF mes_calc <= 0 THEN
LET mes_calc = 12
LET a_ano = year(today) - 1
END IF
LET c_ano = year(today)
SELECT MIN(fecha_corte) INTO fecha_c FROM prdtable
WHERE fecha_corte >= p_fechas
IF status = notfound THEN
LET numero_msg = 58
CALL msg(numero_msg)
LET bandera = 1
END IF
SELECT MIN(dias_gracia) INTO dia FROM prdtable
WHERE fecha_corte = fecha_c
IF dia IS NULL THEN
LET dia = 0
END IF
SELECT UNIQUE a.usuario FROM seg0003 a
WHERE a.usuario = SUSER_SNAME()
IF STATUS != NOTFOUND THEN
LET fecha_c = fecha_c + dia
END IF
LET comp_fech = fecha_c
LET comp_fech1 = TODAY
IF comp_fech < comp_fech1 THEN
LET numero_msg = 57
CALL msg(numero_msg)
LET bandera = 1
END IF
END FUNCTION
FUNCTION informacion()
CALL bodegas(1)
SELECT a.descripcion INTO xbodega FROM intb00009 a
WHERE a.cod_bodega = fact_gral.bodega
SELECT b.nombre,a.calle||' '||a.casa_num||' '||a.urbanizacion||' '||a.barrio
INTO nom_cli,fact_gral.direccion
FROM vetb00004 b,vetb00005 a
WHERE (b.tipo_cliente = recibo.tipo_cliente) and
(b.sec_cliente = recibo.sec_cliente) AND
b.tipo_cliente = a.tipo_cliente AND
b.sec_cliente = a.sec_cliente
SELECT a.nom1_emp,a.apell1_emp INTO descrip2,descrip3 FROM adtb00003 a
WHERE a.num_emp = psec_vend
LET nombre_emp = descrip2 clipped," ",descrip3 clipped
DISPLAY BY NAME recibo.*,nom_cli,nombre_emp,fact_gral.bodega
DISPLAY arr_recibo.cod_mov TO s_recibo[1].cod_mov
DISPLAY arr_recibo.aplica_a TO s_recibo[1].aplica_a
DISPLAY arr_recibo.valor_pag TO s_recibo[1].valor_pag
DISPLAY arr_recibo.valor_pag TO s_recibo[1].valor_pag
DISPLAY xdescuento TO s_recibo[1].val_desc
DISPLAY ptotalb TO s_recibo[1].valor_pen
END FUNCTION