822 lines
24 KiB
Plaintext
822 lines
24 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()
|
|
|
|
DEFINE ant_art RECORD
|
|
ventas CHAR(1),
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
mes SMALLINT
|
|
END RECORD
|
|
|
|
LET ant_art.ventas = pres_venta[curr].ventas
|
|
LET ant_art.cod_n = pres_venta[curr].cod_n
|
|
LET ant_art.cod_grupo = pres_venta[curr].cod_grupo
|
|
LET ant_art.cod_tipo = pres_venta[curr].cod_tipo
|
|
LET ant_art.cod_sec = pres_venta[curr].cod_sec
|
|
LET ant_art.mes = pres_venta[curr].mes
|
|
|
|
FOR idx = 1 TO arr_count()
|
|
IF idx != curr THEN
|
|
IF pres_venta[idx].ventas IS NOT NULL AND
|
|
pres_venta[idx].cod_n IS NOT NULL AND
|
|
pres_venta[idx].cod_grupo IS NOT NULL AND
|
|
pres_venta[idx].cod_tipo IS NOT NULL AND
|
|
pres_venta[idx].cod_sec IS NOT NULL AND
|
|
pres_venta[idx].mes IS NOT NULL THEN
|
|
|
|
IF pres_venta[idx].ventas = ant_art.ventas AND
|
|
pres_venta[idx].cod_n = ant_art.cod_n AND
|
|
pres_venta[idx].cod_grupo = ant_art.cod_grupo AND
|
|
pres_venta[idx].cod_tipo = ant_art.cod_tipo AND
|
|
pres_venta[idx].cod_sec = ant_art.cod_sec AND
|
|
pres_venta[idx].mes = ant_art.mes THEN
|
|
LET numero_msg = 21
|
|
CALL msg(numero_msg)
|
|
LET verdad = "S"
|
|
ELSE
|
|
IF verdad != "S" THEN
|
|
LET verdad = "N"
|
|
END IF
|
|
END IF
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
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 intb00001 a,iptb00002 b ",
|
|
" WHERE ",
|
|
"a.cod_n = b.cod_n and ",
|
|
"a.cod_grupo = b.cod_grupo and ",
|
|
"a.cod_tipo = b.cod_tipo and ",
|
|
"a.cod_sec = b.cod_sec and ",
|
|
"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
|
|
ELSE
|
|
CALL integridad()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
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
|
|
ELSE
|
|
CALL integridad()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
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
|
|
ELSE
|
|
CALL integridad()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
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
|
|
DISPLAY descrip1 TO descrip
|
|
ELSE
|
|
LET numero_msg = 42
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
ELSE
|
|
CALL integridad()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
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
|
|
DISPLAY descrip1 TO nombre_provincia
|
|
ELSE
|
|
LET numero_msg = 65
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
ELSE
|
|
CALL integridad()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
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
|
|
|
|
END FUNCTION
|
|
}
|
|
FUNCTION informacion(pconduce,pventas,pbodega,xcotizacion)
|
|
DEFINE pconduce INT,
|
|
pventas SMALLINT,
|
|
pbodega SMALLINT,
|
|
codigo_provincia INT,
|
|
xcotizacion INT
|
|
# TRANSPORTISTA
|
|
|
|
SELECT DISTINCT a.cod_transp,a.sec_transp,a.cod_tarifa,b.nombre,a.placa
|
|
INTO fact_gral.cod_transp,fact_gral.sec_transp,fact_gral.cod_tarifa,fact_gral.nombre_tran,
|
|
fact_gral.placa_transp
|
|
FROM iptb00006 a,vetb00015 b,vetb00060 c,prtb00012 d
|
|
WHERE (a.num_doc = pconduce) AND
|
|
(a.cod_mov = c.cod_mov) AND
|
|
c.ventas = pventas AND
|
|
(a.cod_transp = b.cod_transp AND
|
|
a.sec_transp = b.sec_transp) AND
|
|
(a.bodega = pbodega) AND
|
|
(a.num_oc = d.num_oc) AND
|
|
d.cotizacion_no = xcotizacion
|
|
|
|
|
|
SELECT a.direccion_cliente,a.cod_provincia INTO fact_gral.direccion,codigo_provincia
|
|
FROM vetb00050 a
|
|
WHERE a.cotizacion_no = xcotizacion
|
|
|
|
SELECT d.nombre_provincia INTO fact_gral.ciudad
|
|
FROM vetb00020 d
|
|
WHERE d.cod_provincia = codigo_provincia
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION busca_ncf(xfactura)
|
|
DEFINE xfactura INT,
|
|
chcodigodgii VARCHAR(20),
|
|
xncf INT,
|
|
xdescripcion VARCHAR(80),
|
|
xfactura_c INT
|
|
|
|
SET CONNECTION "IFMX"
|
|
LET chcodigodgii=NULL
|
|
LET xncf = NULL
|
|
SELECT a.codigo_dgii,a.ncf,b.factura
|
|
INTO chcodigodgii,xncf,xdescripcion,xfactura_c FROM vetb00072 a,vetb00002 b,vetb00071 c
|
|
WHERE b.factura_c = xfactura AND a.documento = b.factura AND a.tipo_doc = 'FT' AND
|
|
a.codigo_dgii = c.codigo_dgii AND c.disponible = "S"
|
|
|
|
SET CONNECTION "MSSQL"
|
|
RETURN chcodigodgii,xncf,xdescripcion,xfactura_c
|
|
END FUNCTION
|
|
|