Files
MBS/PROYECTO/vedir/veconduce.4gl
T

518 lines
19 KiB
Plaintext

SCHEMA smarmotech
DEFINE doce,comp_on,normal,doble,doble_of,negras,negras_off,comp_of CHAR(2),
imprime,archivo,copia STRING,
psec_vend INT,
exito BOOLEAN,
pexistencia DEC(12,5)
FUNCTION veconduce(factura_general,fact_det,usuario,clave,impresor,localidad,xtelefono,xcodmov,xdetalle)
DEFINE origen_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(80),
bodega LIKE iptb00006.bodega,
bodega_destino SMALLINT,
detalle VARCHAR(100),
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),
factura INT,
direccion VARCHAR(100)
END RECORD,
xtelefono VARCHAR(50)
DEFINE origen_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
DEFINE factura_general 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)
END RECORD,
usuario,clave VARCHAR(50),
xdetalle CHAR(180),
impresor,i,localidad SMALLINT,
xcodmov INT
DEFINE fact_det DYNAMIC ARRAY OF RECORD
area SMALLINT,
cod_n INT,
cod_grupo INT,
cod_tipo INT,
cod_sec INT,
descrip_esp CHAR(50),
unidad_med CHAR(5),
cantidad DEC(12,5),
precio LIKE vetb00003.precio,
cantidad_2 LIKE vetb00003.cantidad_2,
monto_fact DECIMAL(18,2),
cantidad_orden DEC(18,5),
pendiente DEC(18,5),
facturada DEC(18,5),
kit_id INT
END RECORD
# BUSCA LA SECUENCIA DEL DOCUMENTO
SELECT a.num_doc INTO origen_x.num_doc FROM iptb00007 a
WHERE a.cod_mov = xcodmov AND a.bodega = factura_general.bodega
IF STATUS = NOTFOUND THEN
LET origen_x.num_doc = 0
INSERT INTO iptb00007(num_doc,cod_mov,bodega,us_crea,fech_crea)
VALUES (origen_x.num_doc,xcodmov,factura_general.bodega,usuario,getdate())
END IF
LET origen_x.num_doc = origen_x.num_doc + 1
UPDATE iptb00007 SET num_doc = origen_x.num_doc,us_mod = usuario,fech_mod = getdate()
WHERE cod_mov = xcodmov AND bodega = factura_general.bodega
#BUSCA DESCRIPCION MOVIMIENTO CONDUCE VENTAS OUTLET
SELECT a.descrip_mov INTO origen_x.descrip_mov FROM iptb00005 a WHERE a.cod_mov = xcodmov
CALL defecto(usuario,clave,impresor) RETURNING imprime,negras,negras_off,
doble,doble_of,comp_on,comp_of,
doce,normal,archivo,copia
START REPORT formu4 TO archivo
LET origen_x.bodega = factura_general.bodega
LET origen_x.cod_cia = factura_general.cod_cia
LET origen_x.cod_mov = xcodmov
LET origen_x.cod_sp = factura_general.tipo_cliente
LET origen_x.cod_sp_Sec = factura_general.sec_cliente
LET origen_x.cod_transp =factura_general.cod_transp
LET origen_x.sec_transp = factura_general.sec_transp
LET origen_x.detalle = xdetalle CLIPPED
LET origen_x.factura = factura_general.factura
LET origen_x.fecha = factura_general.fecha_factura
LET psec_vend = factura_general.sec_vend
LET origen_x.descrip4 = factura_general.nombre
LET origen_x.direccion = factura_general.direccion
# ADICIONA REGISTRO A LA TABLA DE TRANSACCIONES
FOR i = 1 TO fact_det.getLength()
IF fact_det[i].cod_sec IS NOT NULL THEN
LET origen_z.area = fact_det[i].area
LET origen_z.cod_n = fact_det[i].cod_n
LET origen_z.cod_grupo = fact_det[i].cod_grupo
LET origen_z.cod_tipo = fact_det[i].cod_tipo
LET origen_z.cod_sec = fact_det[i].cod_sec
LET origen_z.descrip_esp = fact_det[i].descrip_esp
LET origen_z.unidad_med = fact_det[i].unidad_med
LET origen_z.cantidad_2 = fact_det[i].cantidad
CALL existencia(origen_z.cod_n,origen_z.cod_grupo,origen_z.cod_tipo,origen_z.cod_sec,origen_z.cantidad_2,
origen_x.bodega)
RETURNING exito,pexistencia
LET fact_det[i].cantidad =fact_det[i].cantidad * -1
INSERT INTO iptb00006
(cod_cia,num_doc,fecha,fact_no,cod_sp,cod_sp_sec,placa,cod_mov,
cod_n,cod_grupo,cod_tipo,cod_sec,cantidad_1,cantidad_2,bodega,us_crea,fech_crea,factura,
num_oc)
VALUES
(origen_x.cod_cia,origen_x.factura,origen_x.fecha,
origen_x.factura,origen_x.cod_sp,
origen_x.cod_sp_sec,
factura_general.placa_transp,
origen_x.cod_mov,fact_det[i].cod_n,
fact_det[i].cod_grupo,
fact_det[i].cod_tipo,fact_det[i].cod_sec,
fact_det[i].cantidad,fact_det[i].cantidad,
factura_general.bodega,usuario,getdate(),factura_general.factura,factura_general.orden)
#UBICACION
INSERT INTO dbo.iptb00062
(num_doc
,fecha
,cod_n
,cod_grupo
,cod_tipo
,cod_sec
,cod_mov
,bodega
,cod_seccion
,cod_tramo
,cod_fila
,cod_pos
,cantidad
,cantidad2
,us_crea
,fech_crea)
VALUES
(origen_x.factura
,origen_x.fecha
,fact_det[i].cod_n,
fact_det[i].cod_grupo,
fact_det[i].cod_tipo,fact_det[i].cod_sec
,origen_x.cod_mov
,factura_general.bodega
,0
,0
,0
,0
,fact_det[i].cantidad,fact_det[i].cantidad
,usuario,getdate())
OUTPUT TO REPORT formu4(origen_x.*,origen_z.*,xtelefono)
END IF
END FOR
FINISH REPORT formu4
RUN imprime
RETURN TRUE
END FUNCTION
REPORT formu4(x,z,ptelefono)
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(80),
bodega LIKE iptb00006.bodega,
bodega_destino SMALLINT,
detalle VARCHAR(100),
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),
factura INT,
direccion VARCHAR(100)
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 l,cuenta SMALLINT,
darea varchar(40),
almacen_origen,descrip2 VARCHAR(60)
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 (x.descrip_mov)) / 2
PRINT COLUMN l-2, doble,negras,"(",x.cod_mov using "&&",") ",x.descrip_mov,doble_of
PRINT negras_off
# IF x.cod_mov = 12 THEN
PRINT COLUMN 1, "Factura Venta: ",x.factura 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 RTRIM(a.nom1_emp)+' '+a.apell1_emp INTO nombre
FROM adtb00003 a
WHERE a.num_emp = psec_vend
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 : ","(",x.bodega USING "<<<",")",almacen_origen
# PRINT COLUMN 1, "ALMACEN DESTINO : ","(",x.bodega_destino USING "<<<",")", almacen_destino
PRINT COLUMN 1, "CLIENTE : ",negras, x.descrip4," (",
x.cod_sp using "&&","-",
x.cod_sp_sec using "&&&&&&",")",negras_off
PRINT COLUMN 1, "DIRECCION: ",x.direccion WORDWRAP RIGHT MARGIN 70 ,
" TELEFONO: ",ptelefono CLIPPED
# 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
# PRINT COLUMN 1, "Otros Documentos : ",otros_mov.fact_no
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
SELECT a.nombre INTO descrip2 FROM vetb00015 a
WHERE a.cod_transp=x.cod_transp and
a.sec_transp=x.sec_transp
SKIP 1 LINE
PRINT COLUMN 1, "OBSERVACIONES: ", UPSHIFT(x.detalle)
SKIP 1 LINE
PRINT COLUMN 1, "TRANSPORTISTA: ",x.cod_transp USING "<<","-",x.sec_transp USING "<<<<"," ",descrip2 CLIPPED
PRINT COLUMN 1, "PLACA : ",x.placa
SKIP 4 LINES
PRINT COLUMN 1, "---------------------------",
6 SPACES, "---------------------------",
6 SPACES, "---------------------------"
PRINT COLUMN 1, "Entregado Por ",
6 SPACES, "Recibido Por ",
6 SPACES, "Aprobado Por "
SKIP 1 LINE
PRINT COLUMN 2,
"Original: Contabilidad Copia: Vendedor Copia: Ventas Copia: Almacen"
SKIP 2 LINE
PRINT normal
END REPORT