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