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 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 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