Files
2026-09-22 20:38:51 -04:00

1194 lines
36 KiB
Plaintext

{
----------------------------------------------------------------------------
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 " <Esc> 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 " <Esc> 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 " <Esc> 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