{ ---------------------------------------------------------------------------- PROGRAMA : VEFUMT001 OBJETIVO : Esta Funcion Convierte Los Valores En numeros a letras PROGRAMADOR : Ing. Juan Fco. Soto. FECHA : Enero 22, 1993. ---------------------------------------------------------------------------- } GLOBALS "veprgb000.4gl" DEFINE fecha_ant DATE {FUNCTION convierte() DEFINE consegui CHAR(1) DEFINE p,miles,m,k,a,b,d,c,entero,unidades_mi,unidades_m,unidad,mil,millon, unid_c,u INTEGER DEFINE cheles DECIMAL (7,2) CALL letras() LET consegui = "N" LET entero = valor_orig LET cheles = (valor_orig - entero) * 100 LET unidad = entero / 100 LET unidad = entero - (unidad * 100) LET a = entero / 1000 LET a = entero - (a * 1000) LET d = entero - 19 IF d >= 82 THEN LET c = entero / 100 # Para Controlar los miles y los cientos IF c <= 9 THEN LET valor_letras = valor_letras clipped," ",centenas[c] clipped ELSE LET c = entero / 1000 LET b = entero / 1000000 END IF IF d > 19 THEN LET d = unidad - 19 END IF IF unidad > 0 and unidad < 20 THEN LET d = unidad LET valor_letras = valor_letras clipped," ",unidades1[d] clipped LET consegui = "S" END IF ELSE IF d > 0 AND d <= 81 THEN LET valor_letras = valor_letras clipped," ",decenas[d] clipped LET consegui = "S" END IF END IF # Para controlar los miles IF entero > 999 THEN LET unidades_m = a / 100 LET unidades_m = a - (unidades_m * 100) LET valor_letras = null IF c = 1 THEN LET valor_letras = "MIL" END IF IF c > 1 and c <= 19 THEN LET valor_letras = valor_letras clipped," ",unidades1[c] clipped," ","MIL" END IF IF c >= 20 and c <= 999 THEN IF c < 82 THEN LET c = c - 19 LET valor_letras = valor_letras clipped," ",decenas[c] clipped ELSE LET k = c / 100 LET valor_letras = valor_letras clipped," ",centenas[k] clipped LET unid_c = c - (k * 100) IF unid_c >= 20 THEN LET unid_c = unid_c - 19 LET valor_letras = valor_letras clipped," ",decenas[unid_c] clipped END IF END IF LET valor_letras = valor_letras clipped," ","MIL" END IF LET c = a IF c > 100 THEN LET c = c / 100 LET valor_letras = valor_letras clipped," ",centenas[c] clipped END IF IF unidades_m > 0 and unidades_m < 19 THEN LET a = unidades_m LET valor_letras = valor_letras clipped, " ",unidades1[a] clipped END IF END IF # Para Controlar cantidades en millones IF entero > 999999 THEN LET c = 0 LET miles = entero - 1000000 LET m = miles / 1000 LET p = miles - (m * 1000) LET u = m / 100 LET u = m - (u * 100) LET unidades_mi = p LET unidades_mi = unidades_mi / 100 LET unidades_mi = p - (unidades_mi * 100) LET valor_letras = null IF b = 1 THEN LET valor_letras = "UN MILLON" END IF IF b > 1 and b <= 19 THEN LET valor_letras = valor_letras clipped," ",unidades1[b] clipped," ", "MILLONES" END IF IF b >= 20 and b <= 999999 THEN IF b < 82 THEN LET b = b - 19 LET valor_letras = valor_letras clipped," ",decenas[b] clipped," ", "MILLONES" ELSE LET k = b / 100 LET valor_letras = valor_letras clipped," ",centenas[k] clipped," ", "MILLONES" END IF END IF LET b = m IF b > 100 THEN LET b = b / 100 LET valor_letras = valor_letras clipped," ",centenas[b] clipped IF u > 0 and u <= 19 THEN IF u = 1 THEN LET unidades1[1] = "UN" END IF LET valor_letras = valor_letras clipped," ",unidades1[u] clipped END IF LET valor_letras = valor_letras clipped," ","MIL" END IF IF p > 100 THEN LET p = p / 100 LET valor_letras = valor_letras clipped," ",centenas[p] clipped END IF IF unidades_mi > 0 and unidades_mi < 19 THEN LET m = unidades_mi LET valor_letras = valor_letras clipped, " ",unidades1[m] clipped END IF END IF IF unidad > 0 and unidad < 20 AND consegui = "N" THEN LET d = unidad LET valor_letras = valor_letras clipped," ",unidades1[d] clipped END IF IF unidad >= 20 AND d <= 81 AND consegui = "N" THEN LET valor_letras = valor_letras clipped," ",decenas[d] clipped END IF LET valor_letras = valor_letras clipped," ","PESOS" LET valor_letras = valor_letras clipped," ","CON"," ",cheles using "&&", "/100" END FUNCTION } {FUNCTION letras() LET unidades1[1] = "UNO" LET unidades1[2] = "DOS" LET unidades1[3] = "TRES" LET unidades1[4] = "CUATRO" LET unidades1[5] = "CINCO" LET unidades1[6] = "SEIS" LET unidades1[7] = "SIETE" LET unidades1[8] = "OCHO" LET unidades1[9] = "NUEVE" LET unidades1[10] = "DIEZ" LET unidades1[11] = "ONCE" LET unidades1[12] = "DOCE" LET unidades1[13] = "TRECE" LET unidades1[14] = "CATORCE" LET unidades1[15] = "QUINCE" LET unidades1[16] = "DIESISEIS" LET unidades1[17] = "DIESISIETE" LET unidades1[18] = "DIESIOCHO" LET unidades1[19] = "DIESINUEVE" LET decenas[1] = "VEINTE" LET decenas[2] = "VEINTE Y UNO" LET decenas[3] = "VEINTE Y DOS" LET decenas[4] = "VEINTE Y TRES" LET decenas[5] = "VEINTE Y CUATRO" LET decenas[6] = "VEINTE Y CINCO" LET decenas[7] = "VEINTE Y SEIS" LET decenas[8] = "VEINTE Y SIETE" LET decenas[9] = "VEINTE Y OCHO" LET decenas[10] = "VEINTE Y NUEVE" LET decenas[11] = "TREINTA" LET decenas[12] = "TREINTA Y UNO" LET decenas[13] = "TREINTA Y DOS" LET decenas[14] = "TREINTA Y TRES" LET decenas[15] = "TREINTA Y CUATRO" LET decenas[16] = "TREINTA Y CINCO" LET decenas[17] = "TREINTA Y SEIS" LET decenas[18] = "TREINTA Y SIETE" LET decenas[19] = "TREINTA Y OCHO" LET decenas[20] = "TREINTA Y NUEVE" LET decenas[21] = "CUARENTA" LET decenas[22] = "CUARENTA Y UNO" LET decenas[23] = "CUARENTA Y DOS" LET decenas[24] = "CUARENTA Y TRES" LET decenas[25] = "CUARENTA Y CUATRO" LET decenas[26] = "CUARENTA Y CINCO" LET decenas[27] = "CUARENTA Y SEIS" LET decenas[28] = "CUARENTA Y SIETE" LET decenas[29] = "CUARENTA Y OCHO" LET decenas[30] = "CUARENTA Y NUEVE" LET decenas[31] = "CINCUENTA" LET decenas[32] = "CINCUENTA Y UNO" LET decenas[33] = "CINCUENTA Y DOS" LET decenas[34] = "CINCUENTA Y TRES" LET decenas[35] = "CINCUENTA Y CUATRO" LET decenas[36] = "CINCUENTA Y CINCO" LET decenas[37] = "CINCUENTA Y SEIS" LET decenas[38] = "CINCUENTA Y SIETE" LET decenas[39] = "CINCUENTA Y OCHO" LET decenas[40] = "CINCUENTA Y NUEVE" LET decenas[41] = "SESENTA" LET decenas[42] = "SESENTA Y UNO" LET decenas[43] = "SESENTA Y DOS" LET decenas[44] = "SESENTA Y TRES" LET decenas[45] = "SESENTA Y CUATRO" LET decenas[46] = "SESENTA Y CINCO" LET decenas[47] = "SESENTA Y SEIS" LET decenas[48] = "SESENTA Y SIETE" LET decenas[49] = "SESENTA Y OCHO" LET decenas[50] = "SESENTA Y NUEVE" LET decenas[51] = "SETENTA" LET decenas[52] = "SETENTA Y UNO" LET decenas[53] = "SETENTA Y DOS" LET decenas[54] = "SETENTA Y TRES" LET decenas[55] = "SETENTA Y CUATRO" LET decenas[56] = "SETENTA Y CINCO" LET decenas[57] = "SETENTA Y SEIS" LET decenas[58] = "SETENTA Y SIETE" LET decenas[59] = "SETENTA Y OCHO" LET decenas[60] = "SETENTA Y NUEVE" LET decenas[61] = "OCHENTA" LET decenas[62] = "OCHENTA Y UNO" LET decenas[63] = "OCHENTA Y DOS" LET decenas[64] = "OCHENTA Y TRES" LET decenas[65] = "OCHENTA Y CUATRO" LET decenas[66] = "OCHENTA Y CINCO" LET decenas[67] = "OCHENTA Y SEIS" LET decenas[68] = "OCHENTA Y SIETE" LET decenas[69] = "OCHENTA Y OCHO" LET decenas[70] = "OCHENTA Y NUEVE" LET decenas[71] = "NOVENTA" LET decenas[72] = "NOVENTA Y UNO" LET decenas[73] = "NOVENTA Y DOS" LET decenas[74] = "NOVENTA Y TRES" LET decenas[75] = "NOVENTA Y CUATRO" LET decenas[76] = "NOVENTA Y CINCO" LET decenas[77] = "NOVENTA Y SEIS" LET decenas[78] = "NOVENTA Y SIETE" LET decenas[79] = "NOVENTA Y OCHO" LET decenas[80] = "NOVENTA Y NUEVE" LET decenas[81] = "CIEN" LET centenas[1] = "CIENTO" LET centenas[2] = "DOCIENTOS" LET centenas[3] = "TRESCIENTOS" LET centenas[4] = "CUATROCIENTOS" LET centenas[5] = "QUINIENTOS" LET centenas[6] = "SEISCIENTOS" LET centenas[7] = "SETECIENTOS" LET centenas[8] = "OCHOCIENTOS" LET centenas[9] = "NOVECIENTOS" END FUNCTION } FUNCTION busca_zona1(pais) DEFINE pais VARCHAR(10) OPEN WINDOW busqueda AT 10,10 WITH FORM "vefmwd301" ATTRIBUTE (BORDER,FORM LINE FIRST + 1, comment line last) CONSTRUCT criterio ON vetb00008.cod_zona,vetb00008.descrip FROM vetb00008.cod_zona,vetb00008.descrip IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF LET selec = "SELECT a.cod_zona,a.descrip FROM vetb00008 a ", "WHERE a.status_t is null AND ",criterio clipped, " and a.codigo ='",pais CLIPPED, " ORDER BY a.descrip " PREPARE localiza FROM selec DECLARE pagar CURSOR FOR localiza LET idx = 1 FOREACH pagar INTO zona1_wd[idx].* IF status = NOTFOUND THEN LET existe = "N" EXIT FOREACH END IF LET idx = idx + 1 END FOREACH CALL set_count(idx-1) DISPLAY ARRAY zona1_wd TO consart.* LET curr1 = arr_curr() LET fact_gral.zona = zona1_wd[curr1].cod_zona using "&&&" LET nombre = zona1_wd[curr1].descrip LET descrip1 = nombre CLOSE WINDOW busqueda END FUNCTION FUNCTION busca_pais() OPEN WINDOW busqueda1 AT 10,10 WITH FORM "vefmwd311" ATTRIBUTE (BORDER,FORM LINE FIRST + 1, comment line last) CONSTRUCT criterio ON cotb00018.cod_pais,cotb00018.nom_pais FROM cotb00018.cod_pais,cotb00018.nom_pais IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF LET selec = "SELECT cod_pais,nom_pais FROM cotb00018 ", "WHERE status_t is null AND ",criterio clipped, "ORDER BY 1 " PREPARE localiza1 FROM selec DECLARE country CURSOR FOR localiza1 LET idx = 1 FOREACH country INTO pais_wd[idx].* IF status = NOTFOUND THEN LET existe = "N" EXIT FOREACH END IF LET idx = idx + 1 END FOREACH CALL set_count(idx-1) DISPLAY ARRAY pais_wd TO consart.* LET curr1 = arr_curr() LET fact_gral.zona = pais_wd[curr1].cod_pais LET nombre = pais_wd[curr1].nom_pais LET descrip1 = nombre CLOSE WINDOW busqueda1 END FUNCTION FUNCTION repetir(xcodigo) DEFINE xcodigo CHAR(15) LET verdad = 'N' SELECT a.codigo FROM repitecodigo a WHERE a.codigo = xcodigo IF STATUS <> NOTFOUND THEN LET verdad = "S" END IF RETURN verdad END FUNCTION FUNCTION parciales(factura,fecha,dias,total_factura) DEFINE dias,factura INTEGER, diferencia,v_parcial,total_factura DECIMAL(12,2), fecha DATE, pdias SMALLINT, ch_parcial CHAR(12) OPEN WINDOW parcial AT 10,7 WITH FORM "vefmwd016" ATTRIBUTE (BORDER,COMMENT LINE LAST,FORM LINE FIRST + 1) LET veces = dias / 30 LET v_parcial = total_factura / veces LET fecha_ant = fecha FOR idx = 1 TO veces LET parte[idx].valor = v_parcial SELECT a.dias_prod INTO pdias FROM mestable a WHERE a.mes = MONTH(fecha_ant) LET fecha_ant = fecha_ant + pdias LET parte[idx].fecha_ven = fecha_ant END FOR LET total_valor = 0 LET diferencia = 0 FOR idx = 1 TO veces IF parte[idx].valor IS NOT NULL THEN LET total_valor = total_valor + parte[idx].valor END IF END FOR LET diferencia = total_factura - total_valor IF diferencia != 0 THEN LET parte[veces].valor = v_parcial + diferencia END IF LABEL otra: CALL set_count(veces) INPUT ARRAY parte WITHOUT DEFAULTS FROM s_parte.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) GOTO salir END IF LET total_valor = 0 FOR idx = 1 TO arr_count() IF parte[idx].valor IS NOT NULL THEN LET total_valor = total_valor + parte[idx].valor END IF END FOR IF total_valor != total_factura THEN LET numero_msg = 213 CALL msg(numero_msg) GOTO otra END IF FOR idx = 1 TO arr_count() IF parte[idx].valor IS NOT NULL THEN INSERT INTO vetbparcial VALUES (factura,parte[idx].valor,parte[idx].fecha_ven) LET ch_parcial = fact_gral.factura using "&&&&&&","-",idx using "&&", "/",veces using "&&" INSERT INTO cctb00001 VALUES (NULL,fact_gral.cod_cia,"FT",ch_parcial,fact_gral.tipo_cliente, fact_gral.sec_cliente,NULL,fact_gral.sec_vend, fact_gral.fecha_factura,parte[idx].fecha_ven,ch_parcial, NULL,NULL, parte[idx].valor,NULL,NULL,0,0, NULL, USER,CURRENT, NULL, NULL) END IF END FOR LABEL salir: CLOSE WINDOW parcial END FUNCTION FUNCTION busca_pt() OPEN WINDOW busqueda AT 7,12 WITH FORM "vefmwd003" ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST) LET int_flag = false CONSTRUCT criterio ON a.descrip_esp FROM descrip_esp LET selec2 = "SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp", " FROM iptb00002 a ", " WHERE ", criterio clipped, "ORDER BY a.descrip_esp " IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) GO TO sale9 END IF PREPARE busca_pila FROM selec2 IF status >= 0 THEN IF status = notfound THEN LET numero_msg = 12 CALL msg(numero_msg) END IF END IF DECLARE buscar_pila CURSOR FOR busca_pila LET idx = 1 FOREACH buscar_pila INTO pilas[idx].* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) EXIT FOREACH END IF LET idx = idx + 1 END FOREACH CALL set_count(idx-1) MESSAGE " Selecciona Producto Terminado donde esta el cursor" DISPLAY ARRAY pilas TO s_pilas.* LET curr1 = arr_curr() LET pterminado.cod_n = pilas[curr1].cod_n LET pterminado.cod_grupo = pilas[curr1].cod_grupo LET pterminado.cod_tipo = pilas[curr1].cod_tipo LET pterminado.cod_sec = pilas[curr1].cod_sec LET descuento.cod_n = pilas[curr1].cod_n LET descuento.cod_grupo = pilas[curr1].cod_grupo LET descuento.cod_tipo = pilas[curr1].cod_tipo LET descuento.cod_sec = pilas[curr1].cod_sec LET descrip1 = pilas[curr1].descrip_esp LABEL sale9: CLOSE WINDOW busqueda RETURN pterminado.cod_n,pterminado.cod_grupo,pterminado.cod_tipo,pterminado.cod_sec,descrip1 END FUNCTION FUNCTION consulta_zonas(pais) DEFINE pais VARCHAR(10) OPEN WINDOW busqueda AT 7,12 WITH FORM "vefmwd071" ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST) LET int_flag = false CONSTRUCT criterio ON a.descrip FROM descrip LET selec2 = "SELECT a.cod_zona, a.descrip ", "FROM vetb00008 a ", "WHERE a.status_t is null AND ",criterio clipped, " AND a.codigo='",pais CLIPPED,"' ", " ORDER BY a.descrip " IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) GO TO salir_consulta_z END IF PREPARE busca_zonas FROM selec2 DECLARE buscar_zonas CURSOR FOR busca_zonas LET idx = 1 FOREACH buscar_zonas INTO zonas[idx].* LET idx = idx + 1 END FOREACH IF idx = 1 THEN CLOSE WINDOW busqueda RETURN END IF CALL set_count(idx-1) MESSAGE " Selecciona Zona donde esta el cursor" DISPLAY ARRAY zonas TO s_zonas.* LET curr1 = arr_curr() LET zona.cod_zona = zonas[curr1].cod_zona LET transportista.cod_zona = zonas[curr1].cod_zona LET descrip1 = zonas[curr1].descrip LABEL salir_consulta_z: CLOSE WINDOW busqueda END FUNCTION FUNCTION consulta_provincias(xzona) DEFINE xzona SMALLINT OPEN WINDOW busqueda AT 7,12 WITH FORM "vefmwd072" ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST) LET int_flag = false CONSTRUCT criterio ON b.nombre_provincia FROM nombre_provincia IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) GO TO salir_consulta_p END IF LET selec2 = "SELECT b.cod_provincia, b.nombre_provincia ", "FROM vetb00009 a, vetb00020 b ", "WHERE a.cod_zona=? AND a.cod_provincia=b.cod_provincia AND ", " a.status_t is null AND b.status_t is null AND ", criterio clipped," ORDER BY 1" PREPARE buscar FROM selec2 DECLARE buscar_provincias CURSOR FOR buscar OPEN buscar_provincias USING xzona IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) GO TO salir_consulta_p END IF IF status >= 0 THEN IF status = notfound THEN LET numero_msg = 3 CALL msg(numero_msg) END IF END IF LET idx = 1 WHILE status != NOTFOUND FETCH buscar_provincias INTO provincias[idx].* IF status = NOTFOUND THEN EXIT WHILE END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) EXIT WHILE END IF LET idx = idx + 1 END WHILE CALL set_count(idx-1) MESSAGE " Selecciona Provincia donde esta el cursor" DISPLAY ARRAY provincias TO s_provincias.* LET curr1 = arr_curr() LET zonap.cod_provincia = provincias[curr1].cod_provincia LET transportista.cod_provincia = provincias[curr1].cod_provincia LET descrip1 = provincias[curr1].nombre_provincia LABEL salir_consulta_p: CLOSE WINDOW busqueda END FUNCTION FUNCTION ayuda() MESSAGE "HACER AYUDA" END FUNCTION FUNCTION busca_nombre_zona() SELECT descrip, status_t INTO descrip1, status_reg FROM vetb00008 WHERE cod_zona = transportista.cod_zona IF status >= 0 THEN IF status != NOTFOUND THEN IF status_reg = "E" THEN LET numero_msg = 43 CALL msg(numero_msg) RETURN END IF ELSE LET numero_msg = 42 CALL msg(numero_msg) RETURN END IF END IF END FUNCTION FUNCTION busca_provincia() SELECT a.nombre_provincia, b.status_t INTO descrip1, status_reg FROM vetb00020 a, vetb00009 b WHERE b.cod_zona = transportista.cod_zona AND b.cod_provincia = transportista.cod_provincia AND b.cod_provincia = a.cod_provincia AND b.status_t is null IF status >= 0 THEN IF status != NOTFOUND THEN IF status_reg = "E" THEN LET numero_msg = 66 CALL msg(numero_msg) RETURN END IF ELSE LET numero_msg = 65 CALL msg(numero_msg) RETURN END IF END IF END FUNCTION FUNCTION cventas() DEFINE kventas SMALLINT, dventas CHAR(30) #LET pventas = ui.combobox.forname("formonly.ventas") DECLARE bventas CURSOR FOR SELECT a.ventas,a.descripcion FROM vetb00061 a CALL pventas.clear() FOREACH bventas INTO kventas,dventas CALL pventas.additem(kventas,dventas) END FOREACH CALL pventas.additem(99,"TODAS") END FUNCTION FUNCTION ccondicion() DEFINE kcondicion SMALLINT,kdescripcion CHAR(30) LET pcondicion = ui.combobox.forname("formonly.cond_pago") DECLARE busca_cond CURSOR FOR SELECT a.cond_pago,a.descrip FROM vetb00012 a WHERE a.status_t IS NULL ORDER BY a.descrip CALL pcondicion.clear() FOREACH busca_cond INTO kcondicion,kdescripcion CALL pcondicion.additem(kcondicion,kdescripcion) END FOREACH END FUNCTION FUNCTION cvendedor() DEFINE k1vendedor SMALLINT, dvendedor CHAR(60) LET k2vendedor = ui.combobox.forname("formonly.kvendedor") DECLARE bvendedor CURSOR FOR SELECT UNIQUE b.num_emp,RTRIM(CAST(b.nom1_emp AS CHAR(30)))+" " + RTRIM(CAST(b.apell1_emp AS CHAR(30)))+"("+LTRIM(CAST(b.num_emp AS VARCHAR(6)))+")" FROM vetb00028 a, adtb00003 b WHERE a.sec_vend = b.num_emp order by 2 CALL k2vendedor.clear() FOREACH bvendedor INTO k1vendedor,dvendedor CALL k2vendedor.additem(k1vendedor,dvendedor) END FOREACH END FUNCTION FUNCTION cvendedor1() DEFINE k1vendedor SMALLINT, dvendedor CHAR(60) LET k2vendedor = ui.combobox.forname("formonly.kvendedor") DECLARE bvendedor1 CURSOR FOR SELECT UNIQUE b.num_emp,RTRIM(CAST(b.nom1_emp AS CHAR(30)))+" " + CAST(b.apell1_emp AS CHAR(30)) FROM vetb00028 a, adtb00003 b,seg0007 c WHERE a.sec_vend = b.num_emp and b.status_t is null and a.sec_vend = c.sec_vend AND c.usuario = SUSER_SNAME() order by 2 CALL k2vendedor.clear() FOREACH bvendedor1 INTO k1vendedor,dvendedor CALL k2vendedor.additem(k1vendedor,dvendedor) END FOREACH END FUNCTION FUNCTION cvendedor_aux(ktipo,ksec) DEFINE k1vendedor SMALLINT, dvendedor CHAR(60), ktipo,ksec INT LET k2vendedor = ui.combobox.forname("formonly.sec_vend_aux") DECLARE bvendedor_a CURSOR FOR SELECT UNIQUE b.num_emp,RTRIM(CAST(b.nom1_emp AS CHAR(30)))+" " + RTRIM(CAST(b.apell1_emp AS CHAR(30)))+"("+LTRIM(CAST(b.num_emp AS VARCHAR(6)))+")" FROM vetb00059 a, adtb00003 b WHERE a.sec_vend_aux = b.num_emp AND a.tipo_cliente = ktipo AND a.sec_cliente = ksec order by 2 CALL k2vendedor.clear() FOREACH bvendedor_a INTO k1vendedor,dvendedor CALL k2vendedor.additem(k1vendedor,dvendedor) END FOREACH END FUNCTION FUNCTION csoporte() DEFINE k1vendedor SMALLINT, dvendedor CHAR(60) LET k2vendedor = ui.combobox.forname("formonly.soporte") DECLARE dsoporte CURSOR FOR SELECT UNIQUE b.num_emp,RTRIM(CAST(b.nom1_emp AS CHAR(30)))+" " + CAST(b.apell1_emp AS CHAR(30)) FROM vetb00076 a, adtb00003 b WHERE a.sec_vend = b.num_emp and b.status_t is null order by 2 CALL k2vendedor.clear() FOREACH dsoporte INTO k1vendedor,dvendedor CALL k2vendedor.additem(k1vendedor,dvendedor) END FOREACH END FUNCTION FUNCTION ctipoNegocio(campo) DEFINE ktipoNegocio SMALLINT, dtipoNegocio CHAR(30), campo VARCHAR(100) # LET ptipoNegocio = ui.combobox.forname("formonly.tipo_negocio") LET ptipoNegocio = ui.combobox.forname(campo) CALL ptipoNegocio.clear() DECLARE btipo_negocio CURSOR FOR SELECT a.tipo_negocio,a.descripcion FROM cctb00013 a FOREACH btipo_negocio INTO ktipoNegocio,dtipoNegocio CALL ptipoNegocio.additem(ktipoNegocio,dtipoNegocio) END FOREACH END FUNCTION FUNCTION ctipoNegocio1() DEFINE ktipoNegocio SMALLINT, dtipoNegocio CHAR(30) LET ptipoNegocio = ui.combobox.forname("formonly.tiponegocio") CALL ptipoNegocio.clear() DECLARE btipo_negocio1 CURSOR FOR SELECT a.tipo_negocio,a.descripcion FROM cctb00013 a FOREACH btipo_negocio1 INTO ktipoNegocio,dtipoNegocio CALL ptipoNegocio.additem(ktipoNegocio,dtipoNegocio) END FOREACH END FUNCTION FUNCTION cciudades() DEFINE kciudad SMALLINT,kdescripcion CHAR(30) DECLARE busca_ciudad CURSOR FOR SELECT a.id_ciudad,a.descripcion FROM vetb00016 a WHERE a.status_t IS NULL ORDER BY a.descripcion LET pciudad = ui.ComboBox.forName("formonly.id_ciudad") CALL pciudad.clear() FOREACH busca_ciudad INTO kciudad,kdescripcion IF STATUS = NOTFOUND THEN EXIT FOREACH END IF CALL pciudad.additem(kciudad,kdescripcion) END FOREACH END FUNCTION FUNCTION ciudad_pais(pcodigo) DEFINE kciudad SMALLINT,kdescripcion CHAR(30), pcodigo smallint DECLARE ciudad_pais CURSOR FOR SELECT a.id_ciudad,a.descripcion FROM vetb00016 a,vetb00020 b WHERE a.id_ciudad = b.id_ciudad AND b.cod_provincia = pcodigo # WHERE a.status_t IS NULL AND a.cod_provincia = b.cod_provincia AND # b.cod_provincia = pcodigo ORDER BY a.descripcion LET pciudad = ui.ComboBox.forName("formonly.id_ciudad") CALL pciudad.clear() FOREACH ciudad_pais INTO kciudad,kdescripcion IF STATUS = NOTFOUND THEN EXIT FOREACH END IF CALL pciudad.additem(kciudad,kdescripcion) END FOREACH END FUNCTION FUNCTION busca_direcciones(ptipo_cliente,psec_cliente) DEFINE ptipo_cliente,psec_cliente INT INITIALIZE cliente_dir.* TO NULL SELECT a.* INTO cliente_dir.* FROM vetb00005 a WHERE a.tipo_cliente = ptipo_cliente AND a.sec_cliente = psec_cliente RETURN cliente_dir.* END FUNCTION { FUNCTION existencia(pcodn,pcodgrupo,pcodtipo,pcodsec,cantidad,pid,xbodega) DEFINE pcodn,pcodgrupo,pcodtipo,pcodsec,pid,xbodega SMALLINT, pexistencia,cantidad DEC(12,5) 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 RETURN pexistencia END FUNCTION } FUNCTION busca_soporte(pcodn,pcodgrupo,pcodtipo,pcodsec) DEFINE pcodn,pcodgrupo,pcodtipo,pcodsec INT, sventas DYNAMIC ARRAY OF RECORD sec_vend INT, nombre VARCHAR(80), elije VARCHAR(1) END RECORD, sventas1 DYNAMIC ARRAY OF RECORD num_emp INT, nombre_adicional VARCHAR(80) END RECORD OPEN WINDOW w1 WITH FORM "vefmwd076" DECLARE busca_soporte CURSOR FOR SELECT DISTINCT a.sec_vend,b.nom1_emp||' '||b.apell1_emp FROM cctb00008 a,adtb00003 b WHERE a.sec_vend = b.num_emp AND b.status_t IS NULL AND a.cod_n = pcodn AND a.cod_grupo = pcodgrupo AND a.cod_tipo = pcodtipo AND a.cod_sec = pcodsec LET idx = 1 FOREACH busca_soporte INTO sventas[idx].* LET idx = idx + 1 END FOREACH INPUT ARRAY sventas FROM sventas.* ATTRIBUTE(WITHOUT DEFAULTS) AFTER INPUT FOR idx = 1 TO sventas.getLength() IF sventas[idx].elije = 'S' THEN LET sventas1[idx].num_emp = sventas[idx].sec_vend LET sventas1[idx].nombre_adicional =sventas[idx].nombre END IF END FOR EXIT INPUT END INPUT CLOSE WINDOW w1 RETURN sventas1 END FUNCTION FUNCTION cuenta_soporte(pcodn,pcodgrupo,pcodtipo,pcodsec) DEFINE pcodn,pcodgrupo,pcodtipo,pcodsec,cuenta INT, vendedor INT DECLARE numero_soporte CURSOR FOR SELECT UNIQUE a.sec_vend FROM cctb00008 a WHERE a.cod_n = pcodn AND a.cod_grupo = pcodgrupo AND a.cod_tipo = pcodtipo AND a.cod_sec = pcodsec AND a.status_t IS NULL LET idx = 0 FOREACH numero_soporte INTO vendedor LET idx = idx + 1 END FOREACH LET cuenta = idx RETURN cuenta END FUNCTION FUNCTION busca_duplicado(soporte1,xusuario) DEFINE soporte1 DYNAMIC ARRAY OF RECORD num_emp INT, nombre_adicional VARCHAR(80) END RECORD, xusuario CHAR(50) DELETE FROM ventas_Soporte WHERE usuario = xusuario FOR idx = 1 TO soporte1.getLength() INSERT INTO ventas_soporte VALUES (soporte1[idx].*,xusuario) END FOR DECLARE busca_s CURSOR FOR SELECT DISTINCT a.num_emp,a.nombre FROM ventas_soporte a WHERE a.usuario = xusuario LET idx = 1 FOREACH busca_s INTO soporte1[idx].* LET idx = idx + 1 END FOREACH RETURN soporte1 END FUNCTION