{ ---------------------------------------------------------------------------- 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() 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 cod_zona,descrip FROM vetb00008 ", "WHERE status_t is null AND ",criterio clipped, " ORDER BY 1 " 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 ", "a.status_t is null AND ", criterio clipped, "ORDER BY 5 " 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 END FUNCTION FUNCTION consulta_zonas() 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, " ORDER BY 1 " IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) GO TO salir_consulta_z END IF PREPARE busca_zonas FROM selec2 IF status >= 0 THEN IF status = notfound THEN LET numero_msg = 3 CALL msg(numero_msg) END IF END IF DECLARE buscar_zonas CURSOR FOR busca_zonas LET idx = 1 FOREACH buscar_zonas INTO zonas[idx].* IF status = NOTFOUND THEN EXIT FOREACH END IF 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 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() 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 transportista.cod_zona 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 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 cetiquetas() DEFINE ketiquetas SMALLINT, detiquetas CHAR(30) LET petiquetas = ui.combobox.forname("formonly.etiqueta") DECLARE betiquetas CURSOR FOR SELECT a.codid,a.descripcion FROM vetb00026 a ORDER BY a.descripcion CALL petiquetas.clear() FOREACH betiquetas INTO ketiquetas,detiquetas CALL petiquetas.additem(ketiquetas,detiquetas) 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.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,xbodega) DEFINE pcodn,pcodgrupo,pcodtipo,pcodsec,pid,xbodega SMALLINT, pexistencia,pexistencia1,cantidad DEC(12,5), verdad BOOLEAN LET verdad = FALSE DISPLAY pcodn,pcodgrupo,pcodtipo,pcodsec,cantidad,pid,xbodega 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 IF pexistencia1 IS NULL THEN LET pexistencia1 = 0 END IF IF pexistencia < 0 THEN RETURN TRUE,pexistencia END IF IF cantidad > pexistencia THEN RETURN TRUE,pexistencia END IF RETURN verdad,pexistencia END FUNCTION FUNCTION localidades(chb) DEFINE klocalidad SMALLINT,kdescripcion CHAR(30), plocalidad ui.combobox, chb CHAR(1) IF chb = 1 THEN LET plocalidad = ui.combobox.forname("formonly.sucid") ELSE LET plocalidad = ui.combobox.forname("formonly.bodega") END IF DECLARE busca_local CURSOR FOR SELECT a.sucid,a.sucnombre FROM sucursales a CALL plocalidad.clear() FOREACH busca_local INTO klocalidad,kdescripcion CALL plocalidad.additem(klocalidad,kdescripcion) END FOREACH END FUNCTION FUNCTION duplicar(xcotizacion,xusuario) DEFINE xcotizacion,pcotizacion INT, xusuario CHAR(50) DEFINE despiece DYNAMIC ARRAY OF RECORD etiqueta CHAR(20), cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, lado_1 DEC(12,5), lado_2 DEC(12,5), lado_3 DEC(12,5), cantidad DEC(12,5), medida DEC(12,5) END RECORD, chnumero STRING SELECT a.cotizacion_no INTO pcotizacion FROM vetb00053 a LET pcotizacion = pcotizacion + 1 UPDATE vetb00053 SET cotizacion_no = pcotizacion, us_mod = SUSER_SNAME() SELECT a.cod_cia,ventas,cotizacion_no,tipo_cliente,sec_cliente, a.nombre_cliente,rnc,nombre_proyecto,direccion_cliente, a.cod_provincia,direccion_proyecto,telefono_r,telefono_o, a.email,tipo_precio,beeper,celular,prima,fax1,celular1, a.fax,a.plazo_entrega,a.comentario,contacto, 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.monto_dolar INTO p_vetb50.cod_cia,p_vetb50.ventas,p_vetb50.cotizacion_no,p_vetb50.tipo_cliente,p_vetb50.sec_cliente, p_vetb50.nombre_cliente,p_vetb50.rnc,p_vetb50.nombre_proyecto,p_vetb50.direccion_cliente, p_vetb50.cod_provincia,p_vetb50.direccion_proyecto,p_vetb50.telefono_r,p_vetb50.telefono_o, p_vetb50.email,p_vetb50.tipo_precio,p_vetb50.beeper,p_vetb50.celular,p_vetb50.prima,p_vetb50.fax1,p_vetb50.celular1, p_vetb50.fax,p_vetb50.plazo_entrega,p_vetb50.comentario,p_vetb50.contacto, p_vetb50.cond_pago,p_vetb50.sec_vend,p_vetb50.porc_itbi,p_vetb50.total_bruto,p_vetb50.sub_total, p_vetb50.monto_desc,p_vetb50.monto_itbi,p_vetb50.total_neto,p_vetb50.monto_dolar FROM vetb00050 a WHERE a.cotizacion_no = xcotizacion LET p_vetb50.cotizacion_no=pcotizacion LET p_vetb50.fecha = TODAY BEGIN WORK INSERT INTO vetb00050 (cod_cia,ventas,cotizacion_no,tipo_cliente,sec_cliente, nombre_cliente,rnc,nombre_proyecto,direccion_cliente, cod_provincia,direccion_proyecto,telefono_r,telefono_o, email,tipo_precio,beeper,celular,prima,fax1,celular1, fax,fecha,fecha_entrega,plazo_entrega,comentario,contacto, cond_pago,sec_vend,porc_itbi,total_bruto,sub_total, monto_desc,monto_itbi,total_neto,monto_dolar, us_crea,fech_crea) VALUES (p_vetb50.cod_cia,p_vetb50.ventas,p_vetb50.cotizacion_no,p_vetb50.tipo_cliente,p_vetb50.sec_cliente, p_vetb50.nombre_cliente,p_vetb50.rnc,p_vetb50.nombre_proyecto,p_vetb50.direccion_cliente, p_vetb50.cod_provincia,p_vetb50.direccion_proyecto,p_vetb50.telefono_r,p_vetb50.telefono_o, p_vetb50.email,p_vetb50.tipo_precio,p_vetb50.beeper,p_vetb50.celular,p_vetb50.prima,p_vetb50.fax1,p_vetb50.celular1, p_vetb50.fax,p_vetb50.fecha,p_vetb50.fecha_entrega,p_vetb50.plazo_entrega,p_vetb50.comentario,p_vetb50.contacto, p_vetb50.cond_pago,p_vetb50.sec_vend,p_vetb50.porc_itbi,p_vetb50.total_bruto,p_vetb50.sub_total, p_vetb50.monto_desc,p_vetb50.monto_itbi,p_vetb50.total_neto,p_vetb50.monto_dolar,xusuario,GETDATE()) IF STATUS < 0 THEN ROLLBACK WORK RETURN CALL fgl_winmessage("ERROR","NO FUE POSIBLE LA COPIA DE ESTA COTIZACION","INFO") END IF DECLARE busca_detalle CURSOR FOR SELECT a.secuencia,a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec, a.descripcion,a.cantidad_1,a.cantidad,a.precio, a.porc_desc,a.foto_producto,a.descripcion_area,a.id_kit FROM vetb00051 a WHERE a.cotizacion_no =xcotizacion LET idx = 1 LOCATE arr_cotiza[idx].ruta IN MEMORY FOREACH busca_detalle INTO arr_cotiza[idx].fila, arr_cotiza[idx].area,arr_cotiza[idx].cod_n, arr_cotiza[idx].cod_grupo,arr_cotiza[idx].cod_tipo, arr_cotiza[idx].cod_sec, arr_cotiza[idx].nombre_p, arr_cotiza[idx].cantidad_1,arr_cotiza[idx].cantidad, arr_cotiza[idx].precio,arr_cotiza[idx].porc_desc, arr_cotiza[idx].ruta, arr_cotiza[idx].nombre_area,arr_cotiza[idx].id_kit INSERT INTO vetb00051 (cod_cia,cotizacion_no,ventas,area,cod_n,cod_grupo,cod_tipo,cod_Sec,descripcion,cantidad_1,cantidad,precio, porc_desc,us_crea,fech_crea,descripcion_area,id_kit,secuencia) VALUES (p_vetb50.cod_cia,p_vetb50.cotizacion_no,p_vetb50.ventas, arr_cotiza[idx].area,arr_cotiza[idx].cod_n, arr_cotiza[idx].cod_grupo,arr_cotiza[idx].cod_tipo, arr_cotiza[idx].cod_sec, arr_cotiza[idx].nombre_p, arr_cotiza[idx].cantidad_1,arr_cotiza[idx].cantidad, arr_cotiza[idx].precio,arr_cotiza[idx].porc_desc, xusuario,GETDATE(), arr_cotiza[idx].nombre_area,arr_cotiza[idx].id_kit,arr_cotiza[idx].fila) IF STATUS < 0 THEN ROLLBACK WORK RETURN CALL fgl_winmessage("ERROR","NO FUE POSIBLE LA COPIA DE ESTA COTIZACION","INFO") END IF IF arr_cotiza[idx].ruta IS NOT NULL THEN UPDATE vetb00051 SET foto_producto = arr_cotiza[idx].ruta WHERE cotizacion_no = p_vetb50.cotizacion_no IF STATUS < 0 THEN ROLLBACK WORK RETURN CALL fgl_winmessage("ERROR","NO FUE POSIBLE LA COPIA DE ESTA COTIZACION","INFO") END IF END IF FREE arr_cotiza[idx].ruta LET idx = idx + 1 LOCATE arr_cotiza[idx].ruta IN MEMORY END FOREACH # DESPIECE COTIZACION DECLARE busca_despiece CURSOR FOR SELECT a.etiqueta, a.area,a.cod_n,a.cod_grupo, a.cod_tipo,a.cod_Sec,a.lado_1,a.lado_2,a.lado_3,a.cantidad,a.medida FROM vetb00022 a WHERE a.cotizacion_no = xcotizacion LET p_vetb50.cotizacion_no = pcotizacion LET idx = 1 FOREACH busca_despiece INTO despiece[idx].etiqueta, arr_cotiza[idx].area,arr_cotiza[idx].cod_n,arr_cotiza[idx].cod_grupo, arr_cotiza[idx].cod_tipo,arr_cotiza[idx].cod_sec, despiece[idx].lado_1,despiece[idx].lado_2, despiece[idx].lado_3,despiece[idx].cantidad, despiece[idx].medida INSERT INTO vetb00022 VALUES (despiece[idx].etiqueta,p_vetb50.cotizacion_no,idx, arr_cotiza[idx].area,arr_cotiza[idx].cod_n,arr_cotiza[idx].cod_grupo, arr_cotiza[idx].cod_tipo,arr_cotiza[idx].cod_sec, despiece[idx].lado_1,despiece[idx].lado_2, despiece[idx].lado_3,despiece[idx].cantidad, despiece[idx].medida,null,xusuario,GETDATE(),null,null) IF STATUS < 0 THEN ROLLBACK WORK RETURN CALL fgl_winmessage("ERROR","NO FUE POSIBLE LA COPIA DE ESTA COTIZACION","INFO") END IF LET idx = idx + 1 END FOREACH COMMIT WORK LET chnumero ="NUEVA COTIZACION NO. ", pcotizacion USING "&&&&&&&" CALL fgl_winmessage("ACT","COTIZACION COPIADA EXITOSAMENTE","INFO") CALL fgl_winmessage("ACT",chnumero,"INFO") END FUNCTION FUNCTION busca_soporte(pcodn) DEFINE pcodn 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 a.sec_vend,b.nom1_emp||' '||b.apell1_emp FROM vetb00076 a,adtb00003 b WHERE a.sec_vend = b.num_emp AND a.tipo_usuario = "S" AND b.status_t IS NULL AND a.cod_n = pcodn 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) DEFINE pcodn,cuenta SMALLINT, vendedor INT DECLARE numero_soporte CURSOR FOR SELECT UNIQUE a.sec_vend FROM vetb00076 a WHERE a.cod_n = pcodn AND a.tipo_usuario = "S" 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 FUNCTION cinstalador() DEFINE instalador ui.ComboBox, kinstalador SMALLINT, ddescripcion CHAR(60) LET instalador = ui.ComboBox.forName("formonly.num_emp_inst") CALL instalador.clear() DECLARE busca CURSOR FOR SELECT a.num_emp,RTRIM(a.nom1_emp)||' '||ISNULL(RTRIM(a.apell1_emp),' ') FROM adtb00003 a WHERE a.instalador ='SI' AND a.status_t IS NULL ORDER BY a.nom1_emp FOREACH busca INTO kinstalador,ddescripcion CALL instalador.addItem(kinstalador,ddescripcion) END FOREACH END FUNCTION