Files
MBS/PROYECTO/otrodir/impordenes.4gl
T

451 lines
18 KiB
Plaintext

GLOBALS
DEFINE usuarios,clave CHAR(50)
END GLOBALS
MAIN
#WHENEVER ERROR CONTINUE
DEFER INTERRUPT
CALL arg_val(1) RETURNING usuarios
CALL arg_val(2) RETURNING clave
CALL startlog("impordenes.log")
# CALL extraer()
CALL importar()
END MAIN
FUNCTION IMPORTAR()
DEFINE FILEPATH,FILEPATHt CHAR(80),
OPERATIVO CHAR(30),
caracter CHAR(2)
DEFINE eorden,progreso INT,
ptipo_cliente SMALLINT,
psec_cliente INT,
pnombre CHAR(50),
pcod_zona SMALLINT,
pcod_provincia SMALLINT,
ptelefono CHAR(16),
pfax CHAR(16),
ptelex CHAR(16),
ppatente CHAR(11),
plimite_credito dec(10,2) ,
pzona_postal CHAR(10),
pnum_rnc CHAR(11),
pnombre_patente CHAR(11),
fecha_trx DATE,
porden RECORD
num_oc INT,
fecha_oc CHAR(10),
nombre_file CHAR(40),
sec_vend INT,
tipo_cliente SMALLINT,
sec_cliente SMALLINT,
direccion CHAR(80),
telefono CHAR(80),
cond_pago SMALLINT,
cantidad_i DEC(12,5),
precio_i DEC(12,2),
cantidad_mo DEC(12,5),
precio_mo DEC(12,2),
transporte DEC(10,2),
itbis DEC(12,2),
cotizacion_no INT,
us_crea CHAR(50)
END RECORD,
xdetalle RECORD
num_oc INT,
secuencia SMALLINT,
cod_n SMALLINT,
cod_grupo SMALLINT ,
cod_tipo SMALLINT,
cod_Sec SMALLINT,
cantidad DEC(12,5),
precio DEC(12,2),
descuento DEC(12,2),
us_crea CHAR(50)
END RECORD,
xcotizacion RECORD
cod_cia SMALLINT,
cotizacion_no INT,
fecha CHAR(10),
ventas CHAR(1),
tipo_cliente SMALLINT,
sec_cliente INT,
nombre_cliente CHAR(100),
rnc CHAR(11) ,
direccion_cliente CHAR(100),
cod_provincia SMALLINT,
cond_pago SMALLINT,
sec_vend SMALLINT,
porc_itbi DEC(12,2),
total_bruto DEC(12,2),
sub_total DEC(12,2),
monto_desc DEC(12,2),
monto_itbi DEC(12,2),
total_neto DEC(12,2),
direccion_proyecto CHAR(100),
us_crea CHAR(50)
END RECORD,
xcotizacion_detalle RECORD
cotizacion_no INT,
cod_Cia SMALLINT,
ventas CHAR(1),
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_Sec SMALLINT,
cantidad_1 DEC(12,5),
cantidad DEC(12,5),
precio DEC(12,5),
porc_desc DEC(12,5),
us_crea CHAR(50)
END RECORD
OPEN FORM f FROM "impimportar"
DISPLAY FORM f
LET OPERATIVO = FGL_GETENV("OP")
IF operativo IS NULL THEN
CALL FGL_WINMESSAGE( "Servero","LA VARIABLE <OP> NO ESTA SETADA, FAVOR DE INDICAR EL SISTEMA OP", "stop" )
EXIT PROGRAM
END IF
DISPLAY BY NAME operativo
# EXTRAER INFORMACION
LET filepath = FGL_GETENV("FILEPATH")
IF filepath IS NULL THEN
CALL FGL_WINMESSAGE( "Servero","LA VARIABLE <FILEPATH> NO ESTA SETADA, FAVOR DE INDICAR LA DIRECCION DEL FOLDER DONDE SE GENERAN LAS INFORMACIONES TEMPORALES","stop")
EXIT PROGRAM
END IF
LET progreso = 10
DISPLAY progreso TO progreso
CALL ui.Interface.refresh()
CONNECT TO "marmotech" AS "ex"
SELECT CONVERT(CHAR(10),MAX(a.fecha_oc),103) INTO fecha_trx FROM prtb00012 a
CONNECT TO "smarmotech" USER usuarios USING clave
IF operativo = 'LINUX' THEN
LET caracter = '/'
ELSE
LET caracter = '\\'
END IF
LET filepatht= filepath CLIPPED,caracter CLIPPED,"prtb12.txt"
DISPLAY filepatht TO nombretabla
UNLOAD TO filepatht SELECT a.num_oc,CONVERT(CHAR(10),fecha_oc,103),a.nombre_file,a.sec_vend,
a.tipo_cliente,a.sec_cliente,a.direccion,a.telefono,
a.cond_pago,a.cantidad_i,a.precio_i,
a.cantidad_mo,a.precio_mo,a.transporte,a.itbis,a.cotizacion_no,'PROCESO'
FROM prtb00012 a,vetb00060 b
WHERE a.fecha_oc >= fecha_trx AND
a.tipo_cliente = b.tipo_cliente AND
b.paga_itbis = "S" and
a.status_t IS null
LET progreso = 20
DISPLAY progreso TO progreso
CALL ui.Interface.refresh()
LET filepatht = NULL
LET filepatht= filepath CLIPPED,caracter CLIPPED,"prtb13.txt"
DISPLAY filepatht TO nombretabla
UNLOAD TO filepatht SELECT a.num_oc,a.secuencia,a.cod_n,a.cod_grupo,a.cod_tipo,
a.cod_Sec,a.cantidad,a.precio,a.descuento,'PROCESO'
FROM prtb00013 a,prtb00012 b,vetb00060 c
WHERE a.num_oc = b.num_oc AND b.fecha_oc >= fecha_trx AND
b.tipo_cliente = c.tipo_cliente AND c.paga_itbis = "S" AND
b.status_t IS null
LET filepatht = NULL
LET filepatht= filepath CLIPPED,caracter CLIPPED,"vetb04.txt"
DISPLAY filepatht TO nombretabla
UNLOAD TO filepatht SELECT DISTINCT a.tipo_cliente,a.sec_cliente,a.nombre,
a.cod_zona,a.cod_provincia,a.telefono,
a.fax,a.telex,a.patente,a.limite_credito,
a.zona_postal,a.num_rnc,a.nombre_patente,'PROCESO'
FROM vetb00004 a, prtb00012 b,vetb00060 c
WHERE a.tipo_cliente = B.tipo_cliente AND
a.sec_cliente = b.sec_cliente AND
b.fecha_oc >= fecha_trx AND
a.tipo_cliente = c.tipo_cliente AND
c.paga_itbis = "S" AND
b.status_t IS null
LET progreso = 40
DISPLAY progreso TO progreso
CALL ui.Interface.refresh()
LET filepatht = NULL
LET filepatht= filepath CLIPPED,caracter CLIPPED,"vetb05.txt"
DISPLAY filepatht TO nombretabla
UNLOAD TO filepatht SELECT DISTINCT a.tipo_cliente,a.sec_cliente,
calle,a.casa_num,a.barrio,
a.urbanizacion,'PROCESO'
FROM vetb00005 a,vetb00060 c
WHERE a.tipo_cliente = c.tipo_cliente AND c.paga_itbis = "S" AND
a.status_t is null
LET filepatht = NULL
LET filepatht= filepath CLIPPED,caracter CLIPPED,"vetb28.txt"
DISPLAY filepatht TO nombretabla
UNLOAD TO filepatht SELECT DISTINCT a.tipo_cliente,a.sec_cliente,
a.sec_vend,'PROCESO'
FROM vetb00028 a,vetb00060 c
WHERE a.tipo_cliente = c.tipo_cliente AND
c.paga_itbis = "S"
{ ESTE FILTRA SOLO LAS ORDENES QUE NECESITA UNLOAD TO filepatht SELECT DISTINCT a.tipo_cliente,a.sec_cliente,
a.sec_vend,'PROCESO'
FROM vetb00028 a, prtb00012 b
WHERE a.tipo_cliente = B.tipo_cliente AND
a.sec_cliente = b.sec_cliente and
b.num_oc > eorden
}
LET filepatht = NULL
LET filepatht= filepath CLIPPED,caracter CLIPPED,"vetb49.txt"
DISPLAY filepatht TO nombretabla
UNLOAD TO filepatht SELECT DISTINCT a.tipo_cliente,a.sec_cliente,
a.nombre_proyecto,a.direccion_proyecto,
'PROCESO'
FROM vetb00049 a, prtb00012 b,vetb00060 c
WHERE a.tipo_cliente = B.tipo_cliente AND
a.sec_cliente = b.sec_cliente and
b.fecha_oc >= fecha_trx AND
a.tipo_cliente = c.tipo_cliente AND
c.paga_itbis = "S"
LET progreso = 50
DISPLAY progreso TO progreso
CALL ui.Interface.refresh()
LET filepatht = NULL
LET filepatht= filepath CLIPPED,caracter CLIPPED,"vetb50.txt"
DISPLAY filepatht TO nombretabla
UNLOAD TO filepatht SELECT DISTINCT a.cod_cia,a.cotizacion_no,CONVERT(CHAR(10),a.fecha,103),
a.ventas,a.tipo_cliente,a.sec_cliente,
a.nombre_cliente,a.rnc,a.direccion_cliente,
a.cod_provincia,a.cond_pago,a.sec_vend,
a.porc_itbi,a.total_bruto,a.sub_total,
a.monto_desc,a.monto_itbi,a.total_neto,a.direccion_proyecto,'PROCESO'
FROM vetb00050 a,prtb00012 b ,vetb00060 c
where a.tipo_cliente is not null and
a.sec_cliente is not NULL AND
a.cotizacion_no = b.cotizacion_no AND
b.fecha_oc >= fecha_trx AND
a.tipo_cliente = c.tipo_cliente AND
c.paga_itbis = "S" AND
b.status_t IS NULL AND
a.status_t IS null
LET progreso = 55
DISPLAY progreso TO progreso
CALL ui.Interface.refresh()
LET filepatht = NULL
LET filepatht= filepath CLIPPED,caracter CLIPPED,"vetb51.txt"
DISPLAY filepatht TO nombretabla
UNLOAD TO filepatht SELECT DISTINCT a.cotizacion_no,a.cod_Cia,a.ventas,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,
a.cantidad_1,a.cantidad,precio, a.porc_desc,'PROCESO'
FROM vetb00051 a,prtb00012 b,vetb00060 c
where a.cotizacion_no =b.cotizacion_no AND
b.fecha_oc >= fecha_trx AND
b.tipo_cliente = c.tipo_cliente AND
c.paga_itbis = "S" AND
b.status_t IS null
LET progreso = 60
DISPLAY progreso TO progreso
CALL ui.Interface.refresh()
SET CONNECTION "ex"
#IMPORTACION
DISPLAY "prtb00012" TO nombretabla
BEGIN WORK
DELETE FROM tmpprtb00012
LET filepatht= filepath CLIPPED,caracter CLIPPED,"\\prtb12.txt"
LOAD FROM filepatht INSERT INTO tmpprtb00012(num_oc,fecha_oc,nombre_file,sec_vend,
tipo_cliente,sec_cliente,direccion,telefono,
cond_pago,cantidad_i,precio_i,
cantidad_mo,precio_mo,transporte,itbis,cotizacion_no,us_crea)
DELETE FROM tmpprtb00013
LET filepatht= filepath CLIPPED,caracter CLIPPED,"\\prtb13.txt"
DISPLAY filepatht TO nombretabla
LOAD FROM filepatht INSERT INTO tmpprtb00013(num_oc,secuencia,cod_n,cod_grupo,cod_tipo,
cod_Sec,cantidad,precio,descuento,us_crea)
LET progreso = 70
DISPLAY progreso TO progreso
CALL ui.Interface.refresh()
DECLARE xorden CURSOR FOR
SELECT num_oc,fecha_oc,nombre_file,sec_vend,
tipo_cliente,sec_cliente,direccion,telefono,
cond_pago,cantidad_i,precio_i,
cantidad_mo,precio_mo,transporte,itbis,cotizacion_no,us_crea
FROM tmpprtb00012 WHERE num_oc NOT IN (SELECT num_oc FROM prtb00012)
FOREACH xorden INTO porden.*
INSERT INTO prtb00012(num_oc,fecha_oc,nombre_file,sec_vend,
tipo_cliente,sec_cliente,direccion,telefono,
cond_pago,cantidad_i,precio_i,
cantidad_mo,precio_mo,transporte,itbis,cotizacion_no,us_crea)
VALUES (porden.*)
END FOREACH
DECLARE xorden_Detalle CURSOR FOR
SELECT num_oc,secuencia,cod_n,cod_grupo,cod_tipo,
cod_Sec,cantidad,precio,descuento,us_crea
FROM tmpprtb00013
WHERE num_oc NOT IN (SELECT num_oc FROM prtb00013)
FOREACH xorden_detalle INTO xdetalle.*
INSERT INTO prtb00013(num_oc,secuencia,cod_n,cod_grupo,cod_tipo,
cod_Sec,cantidad,precio,descuento,us_crea)
VALUES (xdetalle.*)
END FOREACH
LET progreso = 75
DISPLAY progreso TO progreso
CALL ui.Interface.refresh()
LET filepatht= filepath CLIPPED,caracter CLIPPED,"\\vetb04.txt"
DISPLAY filepatht TO nombretabla
LOAD FROM filepatht INSERT INTO tmpclientes(tipo_cliente,sec_cliente,nombre,
cod_zona,cod_provincia,telefono,
fax,telex,patente,limite_credito,
zona_postal,num_rnc,nombre_patente,us_crea)
IF STATUS < 0 THEN
ERROR "PROBLEMAS CARGA tmpclientes "
END IF
DECLARE busca_clientes CURSOR FOR
SELECT a.* FROM tmpclientes a
FOREACH busca_clientes INTO ptipo_cliente,psec_cliente,pnombre,pcod_zona,pcod_provincia,
ptelefono,pfax,ptelex,ppatente,plimite_credito,pzona_postal,pnum_rnc,
pnombre_patente
SELECT a.sec_cliente FROM vetb00004 a
WHERE a.tipo_cliente = ptipo_cliente AND
a.sec_cliente = psec_cliente
IF STATUS = NOTFOUND THEN
INSERT INTO vetb00004(tipo_cliente,sec_cliente,nombre,cod_zona,cod_provincia,telefono,
fax,telex,patente,limite_credito,zona_postal,num_rnc,
nombre_patente,us_crea)
VALUES (ptipo_cliente,psec_cliente,pnombre,pcod_zona,pcod_provincia,
ptelefono,pfax,ptelex,ppatente,plimite_credito,pzona_postal,pnum_rnc,pnombre_patente,'PROCESO')
END IF
END FOREACH
DELETE FROM vetb00005
LET filepatht= filepath CLIPPED,caracter CLIPPED,"\\vetb05.txt"
DISPLAY filepatht TO nombretabla
LOAD FROM filepatht INSERT INTO vetb00005(tipo_cliente,sec_cliente,calle,casa_num,
barrio,urbanizacion,us_crea)
IF STATUS < 0 THEN
ERROR "PROBLEMAS en carga vetb05"
END IF
LET progreso = 80
DISPLAY progreso TO progreso
CALL ui.Interface.refresh()
DELETE FROM vetb00028
LET filepatht= filepath CLIPPED,caracter CLIPPED,"\\vetb28.txt"
DISPLAY filepatht TO nombretabla
LOAD FROM filepatht INSERT INTO vetb00028(tipo_cliente,sec_cliente,sec_vend,us_crea)
IF STATUS < 0 THEN
ERROR "PROBLEMAS en carga vetb28"
END IF
LET progreso = 90
DISPLAY progreso TO progreso
CALL ui.Interface.refresh()
DELETE FROM vetb00049
LET filepatht= filepath CLIPPED,caracter CLIPPED,"vetb49.txt"
DISPLAY filepatht TO nombretabla
LOAD FROM filepatht INSERT INTO vetb00049(tipo_cliente,sec_cliente,nombre_proyecto,direccion_proyecto,us_crea)
IF STATUS < 0 THEN
ERROR "PROBLEMAS en carga vetb49 "
END IF
LET progreso = 95
DISPLAY progreso TO progreso
CALL ui.Interface.refresh()
DELETE FROM tmpvetb00050
LET filepatht= filepath CLIPPED,caracter CLIPPED,"vetb50.txt"
DISPLAY filepatht TO nombretabla
LOAD FROM filepatht INSERT INTO tmpvetb00050(cod_cia,cotizacion_no,fecha,
ventas,tipo_cliente,sec_cliente,
nombre_cliente,rnc,direccion_cliente,
cod_provincia,cond_pago,sec_vend,
porc_itbi,total_bruto,sub_total,
monto_desc,monto_itbi,total_neto,direccion_proyecto,us_crea)
DELETE FROM tmpvetb00051
LET filepatht= filepath CLIPPED,caracter CLIPPED,"vetb51.txt"
DISPLAY filepatht TO nombretabla
LOAD FROM filepatht INSERT INTO tmpvetb00051(cotizacion_no,cod_Cia,ventas,cod_n,cod_grupo,cod_tipo,cod_Sec,
cantidad_1,cantidad,precio, porc_desc,us_crea)
DECLARE pcotizacion CURSOR FOR
SELECT cod_cia,cotizacion_no,fecha,
ventas,tipo_cliente,sec_cliente,
nombre_cliente,rnc,direccion_cliente,
cod_provincia,cond_pago,sec_vend,
porc_itbi,total_bruto,sub_total,
monto_desc,monto_itbi,total_neto,direccion_proyecto,us_crea
FROM tmpvetb00050
WHERE cotizacion_no NOT IN (SELECT cotizacion_no FROM vetb00050)
FOREACH pcotizacion INTO xcotizacion.*
INSERT INTO vetb00050(
cod_cia,cotizacion_no,fecha,
ventas,tipo_cliente,sec_cliente,
nombre_cliente,rnc,direccion_cliente,
cod_provincia,cond_pago,sec_vend,
porc_itbi,total_bruto,sub_total,
monto_desc,monto_itbi,total_neto,direccion_proyecto,us_crea)
VALUES (xcotizacion.*)
END FOREACH
DECLARE xcotizacion_d CURSOR FOR
SELECT cotizacion_no,cod_Cia,ventas,cod_n,cod_grupo,cod_tipo,cod_Sec,
cantidad_1,cantidad,precio, porc_desc,us_crea
FROM tmpvetb00051
WHERE cotizacion_no NOT IN (SELECT cotizacion_no FROM vetb00051)
FOREACH xcotizacion_d INTO xcotizacion_detalle.*
INSERT INTO vetb00051(cotizacion_no,cod_Cia,ventas,cod_n,cod_grupo,cod_tipo,cod_Sec,
cantidad_1,cantidad,precio, porc_desc,us_crea)
VALUES (xcotizacion_detalle.*)
END FOREACH
COMMIT WORK
LET progreso = 95
DISPLAY progreso TO progreso
CALL ui.Interface.refresh()
CALL FGL_WINMESSAGE( "Mensaje","FIN PROCEO EXPORTACION / IMPORTACION", "stop" )
END FUNCTION