Files
MBS/PROYECTO/vedir/veprmt049_1.4gl
T

2394 lines
91 KiB
Plaintext

{
------------------------------------------------------------------
PROGRAMA : veprmt049
OBJETIVO : Generar las Cotizaciones de clientes
PROGRAMADOR : JUAN SOTO
FECHA REALIZACION : Tuesday, 27 November, 2001 11:56:20 AM
MODIFICADO POR :
Empresa : MARMOTECH, S.A.
------------------------------------------------------------------
}
IMPORT os
GLOBALS "veprgb000.4gl"
DEFINE file,rcol,arch_pc,fila_excel,chconvierte,chmensaje STRING,
correo CHAR(50),pcelular1,pcelular2 CHAR(15),
factor DEC(12,5),
pdescrip CHAR(40), punidad CHAR(4),
psimbolo CHAR(4),
pexistencia DEC(12,4),controlE CHAR(2),
orden_cliente CHAR(25),
prtb12 RECORD LIKE prtb00012.*,
exito BOOLEAN,
respuesta_req,tipo3 CHAR(3),
chdescuento VARCHAR(10),
precio_ant DEC(12,2),
d_tipos,f_tipos, mensaje,dir_file,filepath,filedestino STRING
DEFINE
actualiza CHAR(1),
pnombre_cliente CHAR(50),
telefono,prog CHAR(9),
esta CHAR(1),
xorden,pvend,ultimo_numero,xi,p_res,tmpnumero1 INTEGER,
vetb05 RECORD LIKE vetb00005.*,
p_vetb49 RECORD LIKE vetb00049.*
DEFINE
cnt SMALLINT,
cantidad_ant LIKE vetb00051.cantidad
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,
cuenta_item SMALLINT,
total_medida DEC(12,4),
valor1,valor2,balancecxc,pporciento DEC(12,2)
DEFINE salida STRING
MAIN
DEFER INTERRUPT
CALL STARTLOG("veprmt049.log")
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
CALL ARG_VAL(4) RETURNING copia
#LET usuarios="jsoto"
#LET clave="lmmjvsd2009"
CONNECT TO "exterior" AS "IFMX"
CONNECT TO "smarmotech" AS "MSSQL" USER usuarios USING clave
CALL startlog("errores.log")
SELECT a.* INTO p_companias.* FROM companias a
SELECT a.sec_vend,a.email,a.celular,a.celular2
INTO pvend,correo,pcelular1,pcelular2
FROM seg0000 a
WHERE a.usuario = usuarios
LET chdescuento = 'NO'
SELECT a.controldescuento INTO chdescuento
FROM seg0003 a
WHERE a.usuario = usuarios
IF chdescuento IS NULL THEN
LET chdescuento = 'NO'
END IF
CALL veprmt049()
END MAIN
FUNCTION veprmt049()
CLEAR SCREEN
OPTIONS
FORM LINE 3,
ERROR LINE 24,
COMMENT LINE 24
OPEN FORM vefmmt049 FROM "vefmmt049"
DISPLAY FORM vefmmt049
#CALL f_canvas()
# BUSCA EL ULTIMO NUMERO TEMPORAL PARA EL CONTROL DE CODIGOS
# DUPLICADOS DE PRODUCTOS
SET CONNECTION "MSSQL"
SELECT a.documento INTO tmpnumero1
FROM repitecodigotmp a WHERE tipo_doc = 'CO'
IF tmpnumero1 IS NULL OR tmpnumero1 = 0 THEN
LET tmpnumero1=1000
INSERT INTO repitecodigotmp VALUES (tmpnumero1,'CO')
END IF
LET tmpnumero1 = tmpnumero1 + 1
UPDATE repitecodigotmp set documento = tmpnumero1
MENU
ON ACTION nuevo
SET CONNECTION "MSSQL"
LET INT_FLAG = FALSE
CLEAR FORM
LET actualiza = "N"
INITIALIZE p_vetb50.* TO NULL
CALL arr_cotiza.clear()
CALL vepcad008()
ON ACTION buscar
SET CONNECTION "MSSQL"
LET INT_FLAG = FALSE
CLEAR FORM
LET actualiza = "S"
CALL vepcmf008()
ON ACTION salir
EXIT MENU
END MENU
END FUNCTION
FUNCTION vepcad008()
DEFINE pasa BOOLEAN
## Captura los datos que va a contener el registro
SET CONNECTION "MSSQL"
LET INT_FLAG = false
#LET p_vetb50.tipo_cliente = NULL
#LET p_Vetb50.sec_cliente = NULL
LET p_vetb50.fecha_entrega = TODAY USING "dd/mm/yyyy"
LET p_vetb50.fecha = TODAY USING "dd/mm/yyyy"
IF actualiza = 'N' THEN
LET p_vetb50.sec_vend = pvend
SELECT a.nom1_emp,a.apell1_emp,a.telefono
INTO nombres,apellidos,telefono
FROM adtb00003 a
WHERE a.num_emp = p_vetb50.sec_vend
SELECT a.sec_vend,a.email,a.celular,a.celular2 INTO pvend,correo,pcelular1,pcelular2
FROM seg0000 a
WHERE a.usuario = usuarios
LET nombre_vend = nombres CLIPPED, " ",apellidos CLIPPED,pcelular1 CLIPPED," / ",
pcelular2 CLIPPED
DISPLAY BY NAME nombre_vend
END IF
DELETE FROM repitecodigo WHERE repitecodigo.documento = tmpnumero1 AND
repitecodigo.TIPO_DOC = 'CO'
DIALOG ATTRIBUTE(UNBUFFERED)
INPUT BY NAME p_vetb50.cod_cia,p_vetb50.cotizacion_no,
p_vetb50.ventas,p_vetb50.tipo_cliente,
p_vetb50.sec_cliente,p_vetb50.nombre_cliente,
p_vetb50.rnc,p_vetb50.porc_itbi,p_vetb50.nombre_proyecto,
p_vetb50.direccion_proyecto,
p_vetb50.direccion_cliente,p_vetb50.cod_provincia,
p_vetb50.fecha,p_vetb50.fecha_entrega,
p_vetb50.plazo_entrega,p_vetb50.cond_pago,p_vetb50.sec_vend,
p_vetb50.comentario,p_vetb50.contacto,
p_vetb50.tipo_precio,p_vetb50.telefono_r,
p_vetb50.celular,p_vetb50.telefono_o,
p_vetb50.beeper, p_vetb50.fax,p_vetb50.email ATTRIBUTE (WITHOUT DEFAULTS)
BEFORE INPUT
LET p_vetb50.cod_cia=1
# LET p_vetb50.direccion_proyecto = NULL
# DISPLAY BY NAME p_vetb50.direccion_proyecto
AFTER FIELD nombre_proyecto
IF p_vetb50.nombre_proyecto IS NULL THEN
CALL msg(16)
NEXT FIELD nombre_proyecto
END IF
AFTER FIELD direccion_proyecto
IF p_vetb50.direccion_proyecto IS NULL THEN
CALL msg(16)
NEXT FIELD direccion_proyecto
END IF
ON ACTION busca_direccion
IF p_vetb50.tipo_cliente IS NOT NULL AND
p_vetb50.sec_cliente IS NOT NULL THEN
LET chconvierte = null
IF p_vetb50.direccion_proyecto IS NOT NULL THEN
LET chconvierte = fgl_winquestion("DIRECCION","EL CAMPO ESTA LLENO CON UNA DIRECCION, DESEA SUSTITUIRLA?","NO","YES|NO","QUESTION",0)
END IF
IF chconvierte = 'SI' OR p_vetb50.direccion_proyecto IS NULL THEN
DISPLAY "ENTRE"
LET selec =
"SELECT ISNULL(RTRIM(a.calle),' ')+', '+ISNULL(RTRIM(a.casa_num),' ')+', '+
ISNULL(RTRIM(a.urbanizacion),' ') +', '+ISNULL(RTRIM(a.barrio),' ')
FROM vetb00005 a
WHERE a.tipo_cliente =? AND ",
" a.sec_cliente =?"
PREPARE cbusca FROM selec
EXECUTE cbusca USING p_vetb50.tipo_cliente,p_vetb50.sec_cliente
INTO p_vetb50.direccion_proyecto
DISPLAY BY NAME p_vetb50.direccion_proyecto
END IF
END IF
ON KEY(CONTROL-W)
IF INFIELD(tipo_cliente) THEN
CALL busca_cliente8()
DISPLAY BY NAME p_vetb50.tipo_cliente,p_vetb50.sec_cliente,p_vetb50.nombre_cliente
LET int_flag = FALSE
END IF
IF INFIELD(sec_cliente) THEN
CALL busca_cliente8()
DISPLAY BY NAME p_vetb50.tipo_cliente,p_vetb50.sec_cliente,p_vetb50.nombre_cliente
LET int_flag = FALSE
END IF
IF INFIELD(cod_provincia) THEN
call busca_provincia1()
DISPLAY BY NAME p_vetb50.cod_provincia,nombre_ciudad
LET int_flag = FALSE
END IF
BEFORE FIELD cod_cia
IF actualiza ="S" THEN
NEXT FIELD tipo_cliente
ELSE
SELECT a.itbi,a.porciento
INTO p_vetb50.porc_itbi,pporciento FROM vetb00019 a WHERE a.disponible = 'S'
DISPLAY BY NAME p_vetb50.porc_itbi
END IF
BEFORE FIELD ventas
IF actualiza <> "S" THEN
LET pventas = ui.ComboBox.forName("formonly.ventas")
CALL cventas()
END IF
BEFORE FIELD cond_pago
# IF actualiza <> "S" THEN
LET pcondicion = ui.ComboBox.forName("formonly.cond_pago")
CALL ccondicion()
# END IF
AFTER FIELD tipo_cliente
IF p_vetb50.tipo_cliente IS NOT NULL THEN
SELECT a.tipo_cliente FROM vetb00060 a
WHERE a.tipo_cliente = p_vetb50.tipo_cliente AND
a.ventas = p_vetb50.ventas
IF STATUS = NOTFOUND THEN
LET numero_msg =386
CALL msg(numero_msg)
NEXT FIELD tipo_cliente
END IF
END IF
AFTER FIELD cod_cia
IF p_vetb50.cod_cia IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_cia
END IF
CASE
WHEN p_vetb50.cod_cia = 1
LET nombre_cia = p_companias.nombre
EXIT CASE
WHEN p_vetb50.cod_cia = 3
LET nombre_cia = "EMPRESA GENERAL"
EXIT CASE
END CASE
DISPLAY BY NAME nombre_cia
BEFORE FIELD fecha
IF actualiza = "N" THEN
LET p_vetb50.fecha = TODAY
DISPLAY BY NAME p_vetb50.fecha
END IF
AFTER FIELD fecha
IF actualiza = "N" THEN
LET p_vetb50.fecha_entrega = p_vetb50.fecha + 19
DISPLAY BY NAME p_vetb50.fecha_entrega
END IF
AFTER FIELD telefono_r
IF p_vetb50.telefono_r IS NOT NULL THEN
IF LENGTH(p_vetb50.telefono_r) != 12 THEN
LET numero_msg =77
CALL msg(numero_msg)
#NEXT FIELD telefono_r
END IF
END IF
AFTER FIELD fax
IF p_vetb50.fax IS NOT NULL THEN
IF LENGTH(p_vetb50.fax) != 12 THEN
LET numero_msg =77
CALL msg(numero_msg)
#NEXT FIELD fax
END IF
END IF
AFTER FIELD celular
IF p_vetb50.celular IS NOT NULL THEN
IF LENGTH(p_vetb50.celular) != 12 THEN
LET numero_msg =77
CALL msg(numero_msg)
#NEXT FIELD celular
END IF
END IF
AFTER FIELD sec_cliente
IF p_vetb50.sec_cliente IS NOT NULL THEN
SELECT a.nombre,a.telefono_casa,a.telefono,a.telex,a.patente,a.cod_provincia,
b.nombre_provincia,
a.num_rnc,a.tipo_negocio
INTO p_vetb50.nombre_cliente,p_vetb50.telefono_r,p_vetb50.telefono_o,
p_vetb50.celular,
p_vetb50.email,p_vetb50.cod_provincia,nombre_ciudad,p_vetb50.rnc,
cliente_bas.tipo_negocio
FROM vetb00004 a,vetb00020 b
WHERE a.tipo_cliente = p_vetb50.tipo_cliente AND
a.sec_cliente = p_vetb50.sec_cliente AND
a.cod_provincia = b.cod_provincia AND
a.status_t IS NULL
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD sec_cliente
END IF
IF cliente_bas.tipo_negocio IS NULL THEN
CALL fgl_winmessage("ERROR","TIPO DE NEGOCIO ESTA NULO EN LA MAESTRA, FAVOR ACTUALIZAR","INFO")
NEXT FIELD sec_cliente
END IF
SELECT a.* INTO vetb05.*
FROM vetb00005 a
WHERE a.tipo_cliente = p_vetb50.tipo_cliente AND
a.sec_cliente = p_vetb50.sec_cliente AND
a.status_t IS NULL
LET p_vetb50.direccion_cliente = vetb05.calle CLIPPED," ,",vetb05.casa_num CLIPPED,
vetb05.barrio CLIPPED," ,",vetb05.urbanizacion CLIPPED
# BUSCA INFORMACION CONTACTO DE LAS ULTIMAS COTIZACIONES
IF p_vetb50.celular IS NULL THEN
SELECT MAX(a.celular) INTO p_vetb50.celular
FROM vetb00050 a
WHERE a.tipo_cliente = p_vetb50.tipo_cliente AND
a.sec_cliente = p_vetb50.sec_cliente AND
a.status_t IS NULL
DISPLAY BY NAME p_vetb50.celular
END IF
LET p_vetb50.nombre_proyecto = NULL
SELECT a.* INTO p_vetb49.*
FROM vetb00049 a
WHERE a.tipo_cliente = p_vetb50.tipo_cliente AND
a.sec_cliente = p_vetb50.sec_cliente AND
a.status_t IS NULL
IF p_vetb50.nombre_proyecto IS NULL THEN
LET p_vetb50.nombre_proyecto = p_vetb49.nombre_proyecto
END IF
IF p_vetb50.direccion_proyecto IS NULL THEN
LET p_vetb50.direccion_proyecto = p_vetb49.direccion_proyecto
END IF
DISPLAY BY NAME p_vetb50.*,nombre_ciudad
# BUSCA VENDEDOR
SELECT a.sec_vend INTO p_vetb50.sec_vend FROM vetb00028 a
WHERE a.tipo_cliente = p_vetb50.tipo_cliente AND
a.sec_cliente = p_vetb50.sec_cliente
CALL control_vendedor(p_vetb50.sec_vend,p_vetb50.tipo_cliente,p_vetb50.sec_cliente) RETURNING pasa
IF pasa = TRUE THEN
NEXT FIELD sec_vend
END IF
SELECT a.nom1_emp,a.apell1_emp,a.telefono
INTO nombres,apellidos,telefono
FROM adtb00003 a
WHERE a.num_emp = p_vetb50.sec_vend
LET nombre_vend = nombres CLIPPED, " ",apellidos CLIPPED," ",pcelular1 CLIPPED,
" / ",pcelular2 CLIPPED
DISPLAY BY NAME p_vetb50.sec_vend,nombre_vend
END IF
IF p_vetb50.sec_cliente IS NOT NULL THEN
# BUSCA BALANCE CON AVANCES
SELECT SUM(a.valor+a.monto_desc) INTO valor1
FROM cctb00001 a
WHERE a.fecha_orig <= today AND
a.tipo_cliente = p_vetb50.tipo_cliente AND
a.sec_cliente = p_Vetb50.sec_cliente AND
a.tipo_doc IN ("AV") AND a.num_doc = a.aplica_a AND a.status_t IS NULL
IF valor1 IS NULL THEN
LET valor1 = 0
END IF
# BUSCA BALANCE SIN AVANCES
SELECT SUM(a.valor+a.monto_desc) INTO valor2
FROM cctb00001 a
WHERE a.fecha_orig <= today AND
a.tipo_cliente = p_Vetb50.tipo_cliente AND
a.sec_cliente = p_vetb50.sec_cliente AND
a.tipo_doc NOT IN ("AV","PC") AND a.status_t IS NULL
IF valor1 IS NULL THEN
LET valor1 = 0
END IF
LET balancecxc = valor2-valor1
DISPLAY BY NAME balancecxc
END IF
AFTER FIELD cod_provincia
SELECT a.nombre_provincia INTO nombre_ciudad
FROM vetb00020 a
WHERE a.cod_provincia = p_vetb50.cod_provincia
IF STATUS = NOTFOUND THEN
LET numero_msg= 3
CALL msg(numero_msg)
NEXT FIELD cod_provincia
END IF
DISPLAY BY NAME nombre_ciudad
AFTER FIELD sec_vend
SELECT a.nom1_emp,a.apell1_emp,a.telefono
INTO nombres,apellidos,telefono
FROM adtb00003 a
WHERE a.num_emp = p_vetb50.sec_vend
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD sec_vend
END IF
LET nombre_vend = nombres CLIPPED, " ",apellidos CLIPPED," ",pcelular1 CLIPPED,
" / ",pcelular2 CLIPPED
DISPLAY BY NAME nombre_vend
# CONTROL VENDEDOR
CALL control_vendedor(p_vetb50.sec_vend,p_vetb50.tipo_cliente,p_vetb50.sec_cliente) RETURNING pasa
IF pasa = TRUE THEN
NEXT FIELD sec_vend
END IF
AFTER INPUT
LET d_tipos="Images"
LET f_tipos="*.jpg *.png *.gif"
LET mensaje=%"Elige Imagen"
IF p_vetb50.tipo_cliente IS NOT NULL THEN
SELECT a.tipo_cliente FROM vetb00060 a
WHERE a.tipo_cliente = p_vetb50.tipo_cliente AND
a.ventas = p_vetb50.ventas
IF STATUS = NOTFOUND THEN
LET numero_msg =386
CALL msg(numero_msg)
NEXT FIELD tipo_cliente
END IF
END IF
IF p_vetb50.cond_pago < 1 OR p_vetb50.cond_pago IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cond_pago
END IF
IF p_vetb50.ventas IS NULL THEN
CALL msg(16)
NEXT FIELD ventas
END IF
IF p_vetb50.sec_vend = 0 OR p_vetb50.sec_Vend IS NULL THEN
CALL msg(16)
NEXT FIELD sec_vend
END IF
END INPUT
INPUT ARRAY arr_cotiza FROM s_pedido.* ATTRIBUTE(WITHOUT DEFAULTS)
BEFORE FIELD porc_Desc
IF chdescuento <> "SI" THEN
SELECT DISTINCT a.cotizacion_no FROM vetb00088 a
WHERE a.cotizacion_no = p_vetb50.cotizacion_no AND
a.cod_n = arr_cotiza[curr].cod_n AND
a.cod_grupo = arr_cotiza[curr].cod_grupo AND
a.cod_tipo = arr_cotiza[curr].cod_tipo AND
a.cod_Sec = arr_cotiza[curr].cod_sec AND
a.autoriza = "SI"
IF STATUS <> NOTFOUND THEN
NEXT FIELD ruta
END IF
END IF
BEFORE INPUT
DECLARE buscaitm CURSOR FOR
SELECT a.area,' ',a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descripcion,b.unidad_med,
a.cantidad_1,a.cantidad,a.precio,a.porc_desc,'0',a.foto_producto
FROM vetb00051 a,iptb00002 b
WHERE a.cotizacion_no = p_vetb50.cotizacion_no AND
a.cod_cia = p_vetb50.cod_cia AND
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
LET idx = 1
FOREACH buscaitm INTO arr_cotiza[idx].*
LET idx = idx + 1
END FOREACH
CALL set_count(idx-1)
ON ACTION busca_descrip
LET curr = arr_curr()
CALL busca_descripcion() RETURNING arr_cotiza[curr].nombre_p
DISPLAY arr_cotiza[curr].nombre_p TO s_pedido[scr_l].nombre_p
ON KEY(CONTROL-W)
IF INFIELD(cod_n) THEN
CALL busca_prod1()
DISPLAY arr_cotiza[curr].cod_n TO s_pedido[scr_l].cod_n
DISPLAY arr_cotiza[curr].cod_grupo TO s_pedido[scr_l].cod_grupo
DISPLAY arr_cotiza[curr].cod_tipo TO s_pedido[scr_l].cod_tipo
DISPLAY arr_cotiza[curr].cod_sec TO s_pedido[scr_l].cod_sec
DISPLAY arr_cotiza[curr].nombre_p TO s_pedido[scr_l].nombre_p
DISPLAY arr_cotiza[curr].unidad TO s_pedido[scr_l].unidad
LET int_flag = FALSE
NEXT FIELD cod_n
END IF
IF INFIELD(cod_grupo) THEN
CALL busca_prod1()
DISPLAY arr_cotiza[curr].cod_n TO s_pedido[scr_l].cod_n
DISPLAY arr_cotiza[curr].cod_grupo TO s_pedido[scr_l].cod_grupo
DISPLAY arr_cotiza[curr].cod_tipo TO s_pedido[scr_l].cod_tipo
DISPLAY arr_cotiza[curr].cod_sec TO s_pedido[scr_l].cod_sec
DISPLAY arr_cotiza[curr].nombre_p TO s_pedido[scr_l].nombre_p
DISPLAY arr_cotiza[curr].unidad TO s_pedido[scr_l].unidad
LET int_flag = FALSE
NEXT FIELD cod_n
END IF
IF INFIELD(cod_tipo) THEN
CALL busca_prod1()
DISPLAY arr_cotiza[curr].cod_n TO s_pedido[scr_l].cod_n
DISPLAY arr_cotiza[curr].cod_grupo TO s_pedido[scr_l].cod_grupo
DISPLAY arr_cotiza[curr].cod_tipo TO s_pedido[scr_l].cod_tipo
DISPLAY arr_cotiza[curr].cod_sec TO s_pedido[scr_l].cod_sec
DISPLAY arr_cotiza[curr].nombre_p TO s_pedido[scr_l].nombre_p
DISPLAY arr_cotiza[curr].unidad TO s_pedido[scr_l].unidad
LET int_flag = FALSE
NEXT FIELD cod_n
END IF
IF INFIELD(cod_sec) THEN
CALL busca_prod1()
DISPLAY arr_cotiza[curr].cod_n TO s_pedido[scr_l].cod_n
DISPLAY arr_cotiza[curr].cod_grupo TO s_pedido[scr_l].cod_grupo
DISPLAY arr_cotiza[curr].cod_tipo TO s_pedido[scr_l].cod_tipo
DISPLAY arr_cotiza[curr].cod_sec TO s_pedido[scr_l].cod_sec
DISPLAY arr_cotiza[curr].nombre_p TO s_pedido[scr_l].nombre_p
DISPLAY arr_cotiza[curr].unidad TO s_pedido[scr_l].unidad
LET int_flag = FALSE
NEXT FIELD cod_n
END IF
IF INFIELD(area) THEN
CALL busca_area()
DISPLAY arr_cotiza[curr].area TO s_pedido[scr_l].area
DISPLAY arr_cotiza[curr].nombre_area TO s_pedido[scr_l].nombre_area
END IF
BEFORE ROW
LET curr = arr_curr()
LET scr_l = scr_line()
# LET arr_cotiza[curr].fila = curr
LET cantidad_ant = arr_cotiza[curr].cantidad
IF arr_cotiza[curr].ruta IS NOT NULL THEN
DISPLAY arr_cotiza[curr].ruta TO foto_producto
END IF
# DISPLAY arr_cotiza[curr].fila TO s_pedido[scr_l].fila
AFTER FIELD area
IF arr_cotiza[curr].area IS NOT NULL THEN
LET nombre_area = NULL
SELECT a.nombre_area INTO nombre_area
FROM prtb00016 a
WHERE a.area_num = arr_cotiza[curr].area
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD area
END IF
LET arr_cotiza[curr].nombre_area = nombre_area
DISPLAY arr_cotiza[curr].nombre_area TO s_pedido[scr_l].nombre_area
END IF
AFTER FIELD cod_sec
LET scr_l = scr_line()
IF arr_cotiza[curr].cod_sec IS NOT NULL THEN
LET controlE= NULL
IF actualiza = 'N' THEN # OPERACION PAA CUANDO ES ADICIONANDO COTIZACION
SELECT a.descrip_esp,a.unidad_med,b.factor_conv,a.control_existencia
INTO arr_cotiza[curr].nombre_p,arr_cotiza[curr].unidad,factor,controlE
FROM iptb00002 a,iptb00001 b
WHERE a.cod_n = arr_cotiza[curr].cod_n AND
a.cod_grupo = arr_cotiza[curr].cod_grupo AND
a.cod_tipo = arr_cotiza[curr].cod_tipo AND
a.cod_sec = arr_cotiza[curr].cod_sec AND
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
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD area
END IF
DISPLAY arr_cotiza[curr].nombre_p TO s_pedido[scr_l].nombre_p
DISPLAY arr_cotiza[curr].unidad TO s_pedido[scr_l].unidad
LET pdescrip = arr_cotiza[curr].nombre_p
LET punidad = arr_cotiza[curr].unidad
ELSE
IF arr_cotiza[curr].nombre_p IS NULL THEN # OPERACION CUANDO ESTA MODIFICANDO COTIZACION
SELECT a.descrip_esp,a.unidad_med,b.factor_conv,a.control_existencia
INTO arr_cotiza[curr].nombre_p,arr_cotiza[curr].unidad,factor,controlE
FROM iptb00002 a,iptb00001 b
WHERE a.cod_n = arr_cotiza[curr].cod_n AND
a.cod_grupo = arr_cotiza[curr].cod_grupo AND
a.cod_tipo = arr_cotiza[curr].cod_tipo AND
a.cod_sec = arr_cotiza[curr].cod_sec AND
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
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD area
END IF
DISPLAY arr_cotiza[curr].nombre_p TO s_pedido[scr_l].nombre_p
DISPLAY arr_cotiza[curr].unidad TO s_pedido[scr_l].unidad
LET pdescrip = arr_cotiza[curr].nombre_p
LET punidad = arr_cotiza[curr].unidad
END IF
END IF
LET verdad = "N"
DELETE FROM repitecodigo WHERE documento = tmpnumero1 and
tipo_doc = 'CO'
FOR idx = 1 TO arr_count()
LET pcodigo = arr_cotiza[idx].area USING "&&&",
arr_cotiza[idx].cod_n USING "&&&&",
arr_cotiza[idx].cod_grupo USING "&&&&",
arr_cotiza[idx].cod_tipo USING "&&&&",
arr_cotiza[idx].cod_sec USING "&&&&"
IF pcodigo IS NOT NULL THEN
WHENEVER ERROR CONTINUE
INSERT INTO repitecodigo (documento,tipo_doc,codigo,codid,us_crea,fech_crea)
VALUES (tmpnumero1,'CO',pcodigo,curr,usuarios,getdate())
IF sqlca.sqlcode THEN
CALL fgl_winmessage("DUPLICADO","CODIGO DUPLICADO EN CAPTURA DE DATOS","STOP")
CALL arr_cotiza.deleteElement(curr)
NEXT FIELD cod_n
END IF
END IF
END FOR
# CONTROL DESPIECE
SELECT a.cod_n FROM iptb00027 a
WHERE a.cod_n = arr_cotiza[curr].cod_n AND
a.cod_grupo = arr_cotiza[curr].cod_grupo AND
a.cod_tipo = arr_cotiza[curr].cod_tipo AND
a.cod_sec = arr_cotiza[curr].cod_sec
IF STATUS <> NOTFOUND THEN
CALL despiece()
DISPLAY arr_cotiza[curr].cantidad_1 TO s_pedido[scr_l].cantidad_1
END IF
# IF arr_cotiza[curr].precio IS NULL THEN
CALL precios(p_vetb50.ventas,arr_cotiza[curr].cod_n,arr_cotiza[curr].cod_grupo,arr_cotiza[curr].cod_tipo,
arr_cotiza[curr].cod_Sec,p_vetb50.tipo_cliente,p_vetb50.sec_cliente)
RETURNING arr_cotiza[curr].precio,existe
IF existe = 'N' THEN
CALL msg(85)
LET existe = 'S'
LET arr_cotiza[curr].precio = NULL
LET arr_cotiza[idx].total_p = 0
DISPLAY arr_cotiza[idx].precio TO s_pedido[scr_l].precio
DISPLAY arr_cotiza[idx].total_p TO s_pedido[scr_l].total_p
NEXT FIELD cod_n
END IF
LET precio_ant = arr_cotiza[curr].precio
IF precio_ant IS NULL THEN
LET precio_ant = 0
END IF
DISPLAY arr_cotiza[curr].precio TO s_pedido[scr_l].precio
END IF
# END IF
AFTER FIELD precio
IF arr_cotiza[curr].cod_Sec IS NOT NULL THEN
IF arr_cotiza[curr].precio < precio_ant THEN
CALL fgl_winmessage("ERROR","PRECIO ES MENOR AL PRECIO DE LISTA","INFO")
NEXT FIELD precio
END IF
END IF
{ AFTER ROW
# CONTROL DESPIECE
IF arr_cotiza[curr].cod_sec IS NOT NULL AND
arr_cotiza[curr].cod_n IS NOT NULL AND
arr_cotiza[curr].cod_grupo IS NOT NULL AND
arr_cotiza[curr].cod_tipo IS NOT NULL THEN
SELECT a.cod_n FROM iptb00027 a
WHERE a.cod_n = arr_cotiza[curr].cod_n AND
a.cod_grupo = arr_cotiza[curr].cod_grupo AND
a.cod_tipo = arr_cotiza[curr].cod_tipo AND
a.cod_sec = arr_cotiza[curr].cod_sec
IF STATUS <> NOTFOUND THEN
IF actualiza = 'N' THEN
LET p_vetb50.cotizacion_no = tmpnumero1
END IF
SELECT a.cod_n FROM vetb00022 a
WHERE a.area = arr_cotiza[curr].area AND
a.cod_n = arr_cotiza[curr].cod_n AND
a.cod_grupo = arr_cotiza[curr].cod_grupo AND
a.cod_tipo = arr_cotiza[curr].cod_tipo AND
a.cod_Sec = arr_cotiza[curr].cod_sec AND
a.cotizacion_no = p_vetb50.cotizacion_no
IF STATUS = NOTFOUND THEN
CALL despiece()
DISPLAY arr_cotiza[curr].cantidad_1 TO s_pedido[scr_l].cantidad_1
END IF
END IF
END IF}
ON ACTION dibujo
LET curr = arr_curr()
CALL ui.Interface.frontCall("standard","openfile", [dir_file,d_tipos,f_tipos,mensaje], [filepath] )
IF filepath IS NOT NULL THEN
DISPLAY "filepath ",filepath
LET arr_cotiza[curr].ruta= filepath CLIPPED
DISPLAY arr_cotiza[curr].ruta TO foto_producto
LET filedestino = FGL_GETENV("IMAGENNOMINA")
LET filedestino = filedestino CLIPPED,"\\PRODUCTOS\\",p_vetb50.cotizacion_no USING "&&&&&&","-",
arr_cotiza[curr].cod_n USING "&&&&",
arr_cotiza[curr].cod_grupo USING "&&&&",'-',
arr_cotiza[curr].cod_tipo USING "&&&&",'-',
arr_cotiza[curr].cod_sec USING "&&&&",
".jpg"
# CALL fgl_winmessage("2",filedestino,"info")
# CALL fgl_winmessage("3",ruta[idx],"info")
CALL fgl_getfile(arr_cotiza[curr].ruta,filedestino)
END IF
AFTER FIELD porc_desc
IF arr_cotiza[curr].porc_desc IS NULL THEN
LET arr_cotiza[curr].porc_desc = 0
END IF
IF chdescuento <> 'SI' THEN
SELECT DISTINCT a.cotizacion_no FROM vetb00088 a
WHERE a.cotizacion_no = p_vetb50.cotizacion_no AND
a.cod_n = arr_cotiza[curr].cod_n AND
a.cod_grupo = arr_cotiza[curr].cod_grupo AND
a.cod_tipo = arr_cotiza[curr].cod_tipo AND
a.cod_Sec = arr_cotiza[curr].cod_sec AND
a.autoriza = "SI"
IF STATUS <> NOTFOUND THEN
NEXT FIELD ruta
END IF
IF arr_cotiza[curr].porc_desc > pporciento THEN
CALL fgl_winmessage("ERROR","PORCIENTO DESCUENTO MAYOR AL PERMITIDO","INFO")
NEXT FIELD porc_Desc
END IF
ELSE
LET arr_cotiza[curr].chactualiza = "SI"
END IF
IF arr_cotiza[curr].cod_sec IS NOT NULL THEN
LET arr_cotiza[curr].total_p = arr_cotiza[curr].precio * arr_cotiza[curr].cantidad
LET arr_cotiza[curr].total_p = arr_cotiza[curr].total_p -
(arr_cotiza[curr].total_p * (arr_cotiza[curr].porc_desc / 100))
DISPLAY arr_cotiza[curr].total_p TO s_pedido[scr_l].total_p
END IF
AFTER FIELD cantidad_1
IF actualiza = "S" THEN
SELECT UNIQUE a.cotizacion_no FROM prtb00012 a,prtb00013 b
WHERE a.cotizacion_no = p_vetb50.cotizacion_no AND
a.num_oc = b.num_oc AND
# b.area = arr_cotiza[curr].area and
b.cod_n = arr_cotiza[curr].cod_n and
b.cod_grupo = arr_cotiza[curr].cod_grupo and
b.cod_tipo = arr_cotiza[curr].cod_tipo and
b.cod_sec = arr_cotiza[curr].cod_sec and
a.status_t is null
IF STATUS != NOTFOUND THEN
LET numero_msg =392
CALL msg(numero_msg)
LET arr_cotiza[curr].cantidad = cantidad_ant
DISPLAY arr_cotiza[curr].cantidad TO s_pedido[scr_l].cantidad
END IF
END IF
IF arr_cotiza[curr].cod_sec IS NOT NULL THEN
SELECT a.factor_conv iNTO factor FROM iptb00001 a
WHERE a.cod_n = arr_cotiza[curr].cod_n and
a.cod_grupo = arr_cotiza[curr].cod_grupo and
a.cod_tipo = arr_cotiza[curr].cod_tipo and
a.cod_sec = arr_cotiza[curr].cod_sec and
a.status_t IS NULL
LET arr_cotiza[curr].cantidad = arr_cotiza[curr].cantidad_1 * factor
DISPLAY arr_cotiza[curr].cantidad TO s_pedido[scr_l].cantidad
# BUSCA EXISTENCIA
IF controlE = "SI" THEN
LET pexistencia = 0
SELECT SUM(a.cantidad_2) iNTO pexistencia FROM iptb00006 a
WHERE a.cod_n = arr_cotiza[curr].cod_n AND
a.cod_grupo = arr_cotiza[curr].cod_grupo AND
a.cod_tipo = arr_cotiza[curr].cod_tipo AND
a.cod_Sec = arr_cotiza[curr].cod_sec AND
a.status_t IS NULL
IF pexistencia < 0 THEN
call FGL_WINMESSAGE('ADVERTENCIA','EXISTENCIA EN NEGATIVO','STOP')
END IF
IF arr_cotiza[curr].cantidad > pexistencia THEN
call FGL_WINMESSAGE('ADVERTENCIA','CANTIDAD EXCEDE EXISTENCIA','STOP')
END IF
END IF
END IF
AFTER INPUT
LET p_vetb50.total_bruto = 0
LET p_vetb50.monto_desc = 0
FOR idx = 1 TO arr_count()
IF arr_cotiza[idx].cod_sec IS NOT NULL THEN
IF arr_cotiza[idx].porc_desc IS NULL THEN
LET arr_cotiza[idx].porc_desc = 0
END IF
IF arr_cotiza[idx].precio IS NULL OR
arr_cotiza[idx].precio = 0 THEN
CALL msg(16)
NEXT FIELD precio
END IF
# CONTROL DESPIECE
SELECT a.cod_n FROM iptb00027 a
WHERE a.cod_n = arr_cotiza[idx].cod_n AND
a.cod_grupo = arr_cotiza[idx].cod_grupo AND
a.cod_tipo = arr_cotiza[idx].cod_tipo AND
a.cod_sec = arr_cotiza[idx].cod_sec
IF STATUS <> NOTFOUND THEN
SELECT a.cod_n FROM vetb00022 a
WHERE a.area = arr_cotiza[idx].area AND
a.cod_n = arr_cotiza[idx].cod_n AND
a.cod_grupo = arr_cotiza[idx].cod_grupo AND
a.cod_tipo = arr_cotiza[idx].cod_tipo AND
a.cod_Sec = arr_cotiza[idx].cod_sec AND
a.cotizacion_no = p_vetb50.cotizacion_no
IF STATUS = NOTFOUND THEN
CALL fgl_winmessage("ERROR","EXISTE UN CODIGO QUE NECESITA DESPIEZAR, FAVOR DE DIRIGIRSE AL CODIGO Y REALIZAR EL DESPIECE","INFO")
NEXT FIELD area
END IF
END IF
LET p_vetb50.total_bruto = p_vetb50.total_bruto + (arr_cotiza[idx].precio * arr_cotiza[idx].cantidad)
LET p_vetb50.monto_desc = (arr_cotiza[idx].precio * arr_cotiza[idx].cantidad) *
(arr_cotiza[idx].porc_desc / 100) + p_vetb50.monto_desc
END IF
END FOR
IF p_vetb50.porc_itbi IS NULL THEN
LET p_vetb50.porc_itbi = 0
END IF
LET p_vetb50.sub_total = p_vetb50.total_bruto - p_vetb50.monto_desc
LET p_vetb50.monto_itbi = p_vetb50.sub_total * (p_vetb50.porc_itbi / 100)
LET p_vetb50.total_neto = p_vetb50.sub_total + p_vetb50.monto_itbi
DISPLAY BY NAME p_vetb50.*
END INPUT
ON ACTION cancel
LET tipo2 = FGL_WINQUESTION("Pregunta","Esta seguro que desea salir del programa?","no","yes|no","question",0)
LET tipo2 = UPSHIFT(tipo2)
DELETE FROM repitecodigo WHERE documento = tmpnumero1 and
tipo_doc = 'CO'
LET int_flag = FALSE
IF tipo2 = "YES" THEN
LET numero_msg = 2
CALL msg(numero_msg)
EXIT DIALOG
ELSE
CONTINUE DIALOG
END IF
ON ACTION actualiza
LET p_vetb50.total_bruto = 0
LET p_vetb50.monto_desc = 0
FOR idx = 1 TO arr_count()
IF arr_cotiza[idx].cod_sec IS NOT NULL THEN
IF arr_cotiza[idx].porc_desc IS NULL THEN
LET arr_cotiza[idx].porc_desc = 0
END IF
# CONTROL DESCUENTO
IF chdescuento <> 'SI' THEN
SELECT DISTINCT a.cotizacion_no FROM vetb00088 a
WHERE a.cotizacion_no = p_vetb50.cotizacion_no AND
a.cod_n = arr_cotiza[idx].cod_n AND
a.cod_grupo = arr_cotiza[idx].cod_grupo AND
a.cod_tipo = arr_cotiza[idx].cod_tipo AND
a.cod_Sec = arr_cotiza[idx].cod_sec AND
a.autoriza = "SI"
IF STATUS <> NOTFOUND THEN
NEXT FIELD ruta
END IF
IF arr_cotiza[idx].porc_desc > pporciento THEN
CALL fgl_winmessage("ERROR","PORCIENTO DESCUENTO MAYOR AL PERMITIDO","INFO")
NEXT FIELD porc_Desc
END IF
ELSE
LET arr_cotiza[idx].chactualiza = "SI"
END IF
IF arr_cotiza[idx].precio IS NULL OR
arr_cotiza[idx].precio = 0 THEN
CALL msg(16)
NEXT FIELD cod_n
END IF
# CONTROL PRECIO
IF arr_cotiza[idx].precio IS NULL THEN
CALL precios(p_vetb50.ventas,arr_cotiza[idx].cod_n,arr_cotiza[idx].cod_grupo,arr_cotiza[idx].cod_tipo,
arr_cotiza[idx].cod_Sec,p_vetb50.tipo_cliente,p_vetb50.sec_cliente)
RETURNING arr_cotiza[idx].precio,existe
IF existe = 'N' THEN
CALL msg(85)
LET existe = 'S'
LET arr_cotiza[idx].precio = NULL
LET arr_cotiza[idx].total_p = 0
DISPLAY arr_cotiza[idx].precio TO s_pedido[scr_l].precio
DISPLAY arr_cotiza[idx].total_p TO s_pedido[scr_l].total_p
NEXT FIELD cod_n
END IF
DISPLAY arr_cotiza[idx].precio TO s_pedido[scr_l].precio
END IF
# CONTROL DESPIECE
SELECT a.cod_n FROM iptb00027 a
WHERE a.cod_n = arr_cotiza[idx].cod_n AND
a.cod_grupo = arr_cotiza[idx].cod_grupo AND
a.cod_tipo = arr_cotiza[idx].cod_tipo AND
a.cod_sec = arr_cotiza[idx].cod_sec
IF STATUS <> NOTFOUND THEN
SELECT a.cod_n FROM vetb00022 a
WHERE a.area = arr_cotiza[idx].area AND
a.cod_n = arr_cotiza[idx].cod_n AND
a.cod_grupo = arr_cotiza[idx].cod_grupo AND
a.cod_tipo = arr_cotiza[idx].cod_tipo AND
a.cod_Sec = arr_cotiza[idx].cod_sec AND
a.cotizacion_no = p_vetb50.cotizacion_no
IF STATUS = NOTFOUND THEN
CALL fgl_winmessage("ERROR","EXISTE UN CODIGO QUE NECESITA DESPIEZAR, FAVOR DE DIRIGIRSE AL CODIGO Y REALIZAR EL DESPIECE","INFO")
NEXT FIELD area
END IF
END IF
LET p_vetb50.total_bruto = p_vetb50.total_bruto + (arr_cotiza[idx].precio * arr_cotiza[idx].cantidad)
LET p_vetb50.monto_desc = (arr_cotiza[idx].precio * arr_cotiza[idx].cantidad) *
(arr_cotiza[idx].porc_desc / 100) + p_vetb50.monto_desc
END IF
END FOR
IF p_vetb50.porc_itbi IS NULL THEN
LET p_vetb50.porc_itbi = 0
END IF
LET p_vetb50.sub_total = p_vetb50.total_bruto - p_vetb50.monto_desc
LET p_vetb50.monto_itbi = p_vetb50.sub_total * (p_vetb50.porc_itbi / 100)
LET p_vetb50.total_neto = p_vetb50.sub_total + p_vetb50.monto_itbi
DISPLAY BY NAME p_vetb50.*
#======================================================================
# CONTROL NUMERO COTIZACION
#======================================================================
LET tipo2 = FGL_WINQUESTION("Pregunta","Guardo esta cotizacion?","no","yes|no","question",0)
LET tipo2= UPSHIFT(tipo2)
IF tipo2 = "YES" THEN
IF actualiza = "N" THEN
#SELECT MAX(a.cotizacion_no) INTO ultimo_numero
#FROM vetb00050 a
#WHERE a.cod_cia = p_vetb50.cod_cia
SELECT a.cotizacion_no INTO ultimo_numero FROM vetb00053 a
IF ultimo_numero IS NULL THEN
LET ultimo_numero = 1
END IF
LET p_vetb50.cotizacion_no = ultimo_numero + 1
DISPLAY BY NAME p_vetb50.cotizacion_no
UPDATE vetb00053 SET cotizacion_no = p_vetb50.cotizacion_no,
us_mod = SUSER_SNAME()
END IF
#LET formato = fgl_winquestion("Informacion","Desa Visualizar esta cotizacion en otro formato?","yes","yes|no","Question",0)
# IF formato = "yes" THEN
# CALL impresion(p_vetb50.cotizacion_no)
# ELSE
LET cuenta_item = arr_count()
UPDATE vetb00022 set cotizacion_no = p_vetb50.cotizacion_no
WHERE cotizacion_no = tmpnumero1
BEGIN WORK
DELETE FROM vetb00050 WHERE cotizacion_no = p_vetb50.cotizacion_no AND
cod_cia = p_vetb50.cod_cia
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,status_t,
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,null,SUSER_SNAME(),GETDATE())
IF STATUS < 0 THEN
ROLLBACK WORK
CALL fgl_winmessage("ERROR","NO FUE POSIBLE LA CREACION DE LA COTIZACION","STOP")
EXIT PROGRAM
END IF
DELETE FROM repitecodigo WHERE documento = tmpnumero1 and tipo_doc = 'CO'
#commit work
IF actualiza = "S" THEN
UPDATE vetb00050 set us_mod = suser_sname(),
fech_mod = GETDATE()
WHERE cotizacion_no = p_vetb50.cotizacion_no AND
cod_cia = p_vetb50.cod_cia
ELSE
UPDATE vetb00050 set us_crea = suser_sname(),
fech_crea = GETDATE()
WHERE cotizacion_no = p_vetb50.cotizacion_no AND
cod_cia = p_vetb50.cod_cia
END IF
DELETE FROM vetb00051 WHERE vetb00051.cotizacion_no = p_vetb50.cotizacion_no AND
vetb00051.cod_cia = p_vetb50.cod_cia
FOR idx = 1 TO arr_count()
IF arr_cotiza[idx].cod_sec IS NOT NULL THEN
IF arr_cotiza[idx].porc_Desc IS NULL THEN
LET arr_cotiza[idx].porc_desc = 0
END IF
INSERT INTO vetb00051
# (cod_cia,cotizacion_no,ventas,fila,area,cod_n,cod_grupo,cod_tipo,cod_Sec,cantidad_1,cantidad,precio,
(cod_cia,cotizacion_no,ventas,area,cod_n,cod_grupo,cod_tipo,cod_Sec,descripcion,cantidad_1,cantidad,precio,
porc_desc,status_t,us_crea,fech_crea,foto_producto,descripcion_area)
VALUES
#(p_vetb50.cod_cia,p_vetb50.cotizacion_no,p_vetb50.ventas,arr_cotiza[idx].fila,
(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,null,
suser_sname(),GETDATE(),arr_cotiza[idx].ruta,arr_cotiza[idx].nombre_area)
IF STATUS < 0 THEN
ROLLBACK WORK
CALL fgl_winmessage("ERROR","NO FUE POSIBLE LA CREACION DEl DETALLE DE LA COTIZACION","STOP")
EXIT PROGRAM
END IF
IF chdescuento = "SI" THEN
SELECT DISTINCT a.cotizacion_no FROM vetb00088 a
WHERE a.cotizacion_no = p_vetb50.cotizacion_no AND
a.cod_n = arr_cotiza[idx].cod_n AND
a.cod_grupo = arr_cotiza[idx].cod_grupo AND
a.cod_tipo = arr_cotiza[idx].cod_tipo AND
a.cod_Sec = arr_cotiza[idx].cod_sec
IF STATUS <> NOTFOUND THEN
UPDATE vetb00088 SET fecha_autorizacion = getdate(),
us_autoriza = usuarios,
porc_descuento = arr_cotiza[idx].porc_desc
WHERE cotizacion_no = p_vetb50.cotizacion_no AND
cod_n = arr_cotiza[idx].cod_n AND
cod_grupo = arr_cotiza[idx].cod_grupo AND
cod_tipo = arr_cotiza[idx].cod_tipo AND
cod_Sec = arr_cotiza[idx].cod_sec
ELSE
INSERT INTO vetb00088
(cotizacion_no
,fecha_autorizacion
,us_autoriza
,cod_n
,cod_grupo
,cod_tipo
,cod_sec
,porc_descuento
,autoriza)
VALUES
(p_vetb50.cotizacion_no,
getdate(),
usuarios,
arr_cotiza[idx].cod_n,
arr_cotiza[idx].cod_grupo,
arr_cotiza[idx].cod_tipo,
arr_cotiza[idx].cod_sec,
arr_cotiza[idx].porc_desc,
arr_cotiza[idx].chactualiza)
END IF
END IF
END IF
END FOR
COMMIT WORK
IF p_vetb50.tipo_cliente IS NOT NULL THEN
LET chconvierte = fgl_winquestion("ORDEN","DESEA CONVERTIR ESTA CATOZACION EN ORDEN DE PEDIDOS?","NO","YES|NO","QUESTION",0)
IF chconvierte = "YES" THEN
INPUT BY NAME orden_cliente ATTRIBUTE(MAGENTA)
AFTER INPUT
IF orden_cliente IS NULL THEN
CALL msg(16)
NEXT FIELD orden_cliente
END IF
END INPUT
CALL convierteorden(p_vetb50.cotizacion_no,orden_cliente,usuarios,clave,impresor,copia) RETURNING prtb12.num_oc,exito
IF NOT exito THEN
CALL fgl_winmessage("ERROR","NO SE REALIZO LA ORDEN","STOP")
ELSE
LET respuesta_req = fgl_winquestion("REQUISICION","ADICIONO LA REQUISICION DE DESPACHO AHORA?","NO","YES|NO","QUESTION",0)
IF respuesta_req = "YES" THEN
SELECT a.* INTO prtb12.* FROM prtb00012 a
WHERE a.cotizacion_no = p_vetb50.cotizacion_no and a.status_t is NULL
CALL requisiciondespacho(prtb12.num_oc,p_vetb50.tipo_cliente,
p_vetb50.sec_cliente,p_vetb50.cond_pago,p_vetb50.total_neto,p_vetb50.fecha,
p_vetb50.sec_vend,usuarios)
END IF
# END IF
# END IF
END IF
END IF
END IF
CALL impresion(p_vetb50.cotizacion_no,'veprmt049.4rp','PDF',cuenta_item) RETURNING salida
# INSERTA EN INFORMIX
SET CONNECTION "IFMX"
SELECT a.ncf INTO xncf FROM vetb00061 a
WHERE a.tipo_cliente = p_vetb50.tipo_cliente
DELETE FROM vetb00050 WHERE cotizacion_no = p_vetb50.cotizacion_no AND
cod_cia = p_vetb50.cod_cia
#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,status_t,
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,null,usuarios,current)
#commit work
IF actualiza = "S" THEN
UPDATE vetb00050 set us_mod = user,
fech_mod = current
WHERE cotizacion_no = p_vetb50.cotizacion_no AND
cod_cia = p_vetb50.cod_cia
ELSE
UPDATE vetb00050 set us_crea = user,
fech_crea = current
WHERE cotizacion_no = p_vetb50.cotizacion_no AND
cod_cia = p_vetb50.cod_cia
END IF
DELETE FROM vetb00051 WHERE vetb00051.cotizacion_no = p_vetb50.cotizacion_no AND
vetb00051.cod_cia = p_vetb50.cod_cia
FOR idx = 1 TO arr_count()
IF arr_cotiza[idx].cod_sec IS NOT NULL THEN
IF arr_cotiza[idx].porc_Desc IS NULL THEN
LET arr_cotiza[idx].porc_desc = 0
END IF
INSERT INTO vetb00051
# (cod_cia,cotizacion_no,ventas,fila,area,cod_n,cod_grupo,cod_tipo,cod_Sec,cantidad_1,cantidad,precio,
(cod_cia,cotizacion_no,ventas,area,cod_n,cod_grupo,cod_tipo,cod_Sec,cantidad_1,cantidad,precio,
porc_desc,status_t,us_crea,fech_crea)
VALUES
#(p_vetb50.cod_cia,p_vetb50.cotizacion_no,p_vetb50.ventas,arr_cotiza[idx].fila,
(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].cantidad_1,arr_cotiza[idx].cantidad,
arr_cotiza[idx].precio,arr_cotiza[idx].porc_desc,null,
user,current)
END IF
END FOR
SET CONNECTION "MSSQL"
LET numero_msg = 1
CALL msg(numero_msg)
ELSE
DELETE FROM repitecodigo WHERE documento = tmpnumero1 and
tipo_doc = 'CO'
CONTINUE DIALOG
END IF
EXIT DIALOG
END DIALOG
END FUNCTION
FUNCTION vepcmf008()
DEFINE chanula CHAR(3)
## Aqui se prepara para la captura del criterio de seleccion
CONSTRUCT BY NAME criterio ON a.cod_cia,a.cotizacion_no,a.tipo_cliente,a.sec_cliente,
a.nombre_cliente,a.nombre_proyecto,
a.direccion_proyecto,a.fecha
IF INT_FLAG THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET INT_FLAG = FALSE
RETURN
END IF
LET SELEC = " SELECT DISTINCT a.cod_cia,a.ventas,a.cotizacion_no,a.tipo_cliente,a.sec_cliente,a.nombre_cliente, " ||
" a.rnc,a.nombre_proyecto,a.direccion_cliente,a.cod_provincia,a.direccion_proyecto, " ||
" a.telefono_r,a.telefono_o,a.email,a.tipo_precio,a.beeper,a.celular,a.prima,a.fax1,a.celular1, " ||
" a.fax, CONVERT(CHAR(10),a.fecha,103),CONVERT(CHAR(10),a.fecha_entrega,103), " ||
" a.plazo_entrega,a.comentario,a.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 " ||
" FROM vetb00050 a " ||
" WHERE " || criterio CLIPPED || " AND a.status_t is null ",
" ORDER BY a.cotizacion_no"
PREPARE busca FROM selec
DECLARE datos SCROLL CURSOR FOR busca
OPEN datos
FETCH FIRST datos 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.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
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
DISPLAY "sub ",p_vetb50.sub_total
CALL busca_info()
MENU "OPCIONES "
COMMAND "Siguiente" "Presenta en pantalla la siguiente cotizacion encontrada"
FETCH NEXT datos 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.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
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
CALL busca_info()
COMMAND "anterior" "Presenta en pantalla el registro anterior encontrado"
FETCH PREVIOUS datos 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.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
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
CALL busca_info()
COMMAND "Primero" "Presenta en pantalla el primer registro encontrado"
FETCH FIRST datos 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.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
CALL busca_info()
COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado"
FETCH LAST datos 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.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
CALL busca_info()
ON ACTION impresion
CALL impresion(p_vetb50.cotizacion_no,'veprmt049.4rp','PDF',cuenta_item) RETURNING salida
COMMAND "Borrar"
CALL busca_info()
PROMPT "Esta seguro?" FOR esta
LET esta = UPSHIFT(esta)
IF esta = "S" THEN
UPDATE vetb00050 set status_t = "E",
us_mod = suser_sname(),
fech_mod = GETDATE()
WHERE @cotizacion_no = p_vetb50.cotizacion_no
UPDATE vetb00051 set status_t = "E",
us_mod = suser_sname(),
fech_mod = GETDATE()
WHERE @cotizacion_no = p_vetb50.cotizacion_no
LET numero_msg = 39
CALL msg(numero_msg)
END IF
COMMAND "Escoger" "Actualiza Cotizacion"
LET actualiza = "S"
SELECT UNIQUE a.cotizacion_no FROM prtb00012 a
WHERE a.cotizacion_no = p_vetb50.cotizacion_no and
a.status_t is null
IF STATUS != NOTFOUND THEN
LET numero_msg =392
CALL msg(numero_msg)
EXIT MENU
END IF
CALL vepcad008()
LET numero_msg = 13
CALL msg(numero_msg)
COMMAND "Orden" "Hacer Orden Pedidos"
IF xorden IS NOT NULL THEN
CALL fgl_winmessage("ERROR","ESTA COTIZACION YA TIENE ORDEN","STOP")
ELSE
INPUT BY NAME orden_cliente ATTRIBUTE(MAGENTA)
AFTER INPUT
IF orden_cliente IS NULL THEN
CALL msg(16)
NEXT FIELD orden_cliente
END IF
END INPUT
IF p_vetb50.tipo_cliente IS NOT NULL THEN
CALL convierteorden(p_vetb50.cotizacion_no,orden_cliente,usuarios,clave,impresor,copia) RETURNING prtb12.num_oc,exito
IF NOT exito THEN
CALL fgl_winmessage("ERROR","NO SE REALIZO LA ORDEN","STOP")
END IF
DISPLAY prtb12.num_oc TO orden
CALL msg(1)
END IF
END IF
COMMAND "Anula Orden" "Anulacion de la orden de pedidos"
IF xorden IS NOT NULL THEN
LET chanula = fgl_winquestion("ORDEN","ESTA SEGURO DE ANULAR ESTA ORDEN?","NO","YES|NO","QUESTION",0)
IF chanula = "YES" THEN
SET CONNECTION "MSSQL"
# VERIFICA SI TIENE REQUISICION
SELECT UNIQUE a.num_oc FROM cctb00026 a
WHERE a.num_oc = xorden AND
a.status_t IS NULL
IF STATUS <> NOTFOUND THEN
ERROR "NO PUEDE ANULAR ORDEN, TIENE REQUISICION"
CONTINUE MENU
END IF
# VERIFICA SI ESTA FACTURADA LA ORDEN
SELECT UNIQUE a.orden FROM vetb00002 a
WHERE a.orden = xorden AND
a.status_t is null
IF STATUS != NOTFOUND THEN
ERROR "NO PUEDE ANULAR ORDEN, TIENE FACTURAS"
CONTINUE MENU
END IF
# VERIFICACION DESPACHO
SELECT UNIQUE a.conduce_no FROM iptb00006 a
WHERE a.num_oc = xorden AND
a.fech_Crea > '01/01/2007' and
a.status_t is null
IF STATUS != NOTFOUND THEN
ERROR "NO PUEDE ANULAR ORDEN, TIENE TRANSACCIONES DE INVENTARIO"
CONTINUE MENU
END IF
UPDATE prtb00012 SET status_t = 'E',
us_mod = usuarios,
fech_mod = getdate()
WHERE num_oc =xorden
UPDATE prtb00013 SET status_t = 'E',
us_mod = usuarios,
fech_mod = getdate()
WHERE num_oc =xorden
{
SET CONNECTION "IFMX"
UPDATE prtb00012 SET status_t = 'E',
us_mod = usuarios,
fech_mod = getdate()
WHERE num_oc =xorden
UPDATE prtb00013 SET status_t = 'E',
us_mod = usuarios,
fech_mod = getdate()
WHERE num_oc =xorden
}
CALL fgl_winmessage("WARNING","ORDEN ANULADA","INFO")
END IF
END IF
COMMAND "Requisicion" "Hacer requisicion"
IF xorden IS NULL THEN
CALL fgl_winmessage("ERROR","ESTA COTIZACION NO TIENE ORDEN, NO PUEDE HACER REQUISICION","STOP")
CONTINUE MENU
END IF
LET respuesta_req = fgl_winquestion("REQUISICION","ESTA SEGURO DE HACER LA REQUISICION?","NO","YES|NO","QUESTION",0)
IF respuesta_req = "YES" THEN
SELECT UNIQUE a.num_oc FROM cctb00026 a
WHERE a.num_oc = xorden AND a.status_t IS NULL
IF STATUS != NOTFOUND THEN
CALL fgl_winmessage("ERROR","ORDEN TIENE REQUISICION, DEBE HACERLA POR EL PROGRAMA NORMAL","STOP")
CONTINUE MENU
END IF
CALL requisiciondespacho(prtb12.num_oc,p_vetb50.tipo_cliente,p_vetb50.sec_cliente,p_vetb50.cond_pago,p_vetb50.total_neto,p_vetb50.fecha,p_vetb50.sec_vend,usuarios)
END IF
COMMAND "@quit.bmp" "Retorna al menu anterior"
EXIT MENU
END MENU
END FUNCTION
FUNCTION busca_area()
OPEN WINDOW busqueda AT 7,12 WITH FORM "vefmwd102"
ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST)
LET INT_FLAG = false
CONSTRUCT criterio ON a.nombre_area FROM nombre_area
LET selec2 = "SELECT a.area_num, a.nombre_area ",
" FROM prtb00016 a",
" WHERE ",
"a.status_t is NULL AND ",
criterio clipped,
"ORDER BY 2 "
IF INT_FLAG THEN
LET numero_msg = 2
CALL msg(numero_msg)
GO TO salir_consulta_c
END IF
PREPARE busca_area FROM selec2
IF status >= 0 THEN
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
END IF
ELSE
END IF
DECLARE buscar_area1 CURSOR FOR busca_area
LET idx = 1
FOREACH buscar_area1 INTO arr_area[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 Cliente donde esta el cursor"
DISPLAY ARRAY arr_area TO s_area.*
LET curr1 = arr_curr()
LET int_flag = FALSE
LET arr_cotiza[curr].area = arr_area[curr1].area_num
LET arr_cotiza[curr].nombre_area = arr_area[curr1].nombre_area
LABEL salir_consulta_c:
CLOSE WINDOW busqueda
END FUNCTION
FUNCTION busca_provincia1()
DEFINE arr_provincias DYNAMIC ARRAY OF RECORD
cod_provincia LIKE vetb00020.cod_provincia,
nombre_provincia LIKE vetb00020.nombre_provincia
END RECORD
OPEN WINDOW busqueda AT 7,12 WITH FORM "vefmwd018"
ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST)
LET INT_FLAG = false
CONSTRUCT criterio ON a.nombre_provincia FROM nombre_provincia
LET selec2 = "SELECT a.cod_provincia, a.nombre_provincia ",
" FROM vetb00020 a",
" WHERE ",
"a.status_t is NULL AND ",
criterio clipped,
"ORDER BY 2 "
IF INT_FLAG THEN
LET numero_msg = 2
CALL msg(numero_msg)
GO TO salir_consulta_c
END IF
PREPARE busca_provp FROM selec2
IF status >= 0 THEN
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
END IF
ELSE
END IF
DECLARE buscar_prov CURSOR FOR busca_provp
LET idx = 1
FOREACH buscar_prov INTO arr_provincias[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 Cliente donde esta el cursor"
DISPLAY ARRAY arr_provincias TO s_provincias.*
LET curr1 = arr_curr()
LET int_flag = FALSE
LET p_vetb50.cod_provincia = arr_provincias[curr1].cod_provincia
LET nombre_ciudad = arr_provincias[curr1].nombre_provincia
LABEL salir_consulta_c:
CLOSE WINDOW busqueda
END FUNCTION
FUNCTION busca_cliente8()
OPEN WINDOW busqueda AT 7,12 WITH FORM "vefmwd002"
ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST)
LET INT_FLAG = false
CONSTRUCT criterio ON a.tipo_cliente,a.nombre,b.nombre_proyecto
FROM tipo_cliente,nombre,nombre_proyecto
LET selec2 = "SELECT a.tipo_cliente, a.sec_cliente, a.nombre,b.nombre_proyecto ",
" FROM vetb00004 a,outer vetb00049 b ",
" where a.tipo_cliente = b.tipo_cliente and a.sec_cliente = b.sec_cliente and ",
"a.status_t is NULL AND ",
criterio clipped,
"ORDER BY 1,2 "
IF INT_FLAG THEN
LET numero_msg = 2
CALL msg(numero_msg)
GO TO salir_consulta_c
END IF
PREPARE busca_cliente8s FROM selec2
IF status >= 0 THEN
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
END IF
ELSE
END IF
DECLARE buscar_clientes CURSOR FOR busca_cliente8s
LET idx = 1
FOREACH buscar_clientes INTO arr_clientes[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 Cliente donde esta el cursor"
DISPLAY ARRAY arr_clientes TO s_clientes.*
LET curr1 = arr_curr()
IF INT_FLAG THEN
LET numero_msg = 2
CALL msg(numero_msg)
GOTO salir_consulta_c
END IF
LET int_flag = FALSE
LET p_vetb50.tipo_cliente = arr_clientes[curr1].tipo_cliente
LET p_vetb50.sec_cliente = arr_clientes[curr1].sec_cliente
LET p_vetb50.nombre_cliente = arr_clientes[curr1].nombre
LABEL salir_consulta_c:
CLOSE WINDOW busqueda
END FUNCTION
FUNCTION busca_prod1()
DEFINE arr_prod DYNAMIC ARRAY OF RECORD
cod_n INTEGER,
cod_grupo INTEGER,
cod_tipo INTEGER,
cod_sec INTEGER,
descrip_esp CHAR(50),
unidad_med LIKE intb00001.unidad_med,
cantidad_o DEC(18,4),
cantidad_c DEC(18,4),
existencia DEC(18,4)
END RECORD,
selec_pt CHAR(1500)
OPEN WINDOW busca_2 AT 8,4 WITH FORM "vefmwd100" ATTRIBUTE (BORDER,FORM LINE
FIRST + 1,PROMPT LINE LAST)
CONSTRUCT criterio ON a.cod_n,a.cod_grupo,a.cod_tipo,a.descrip_esp FROM
cod_n,cod_grupo,cod_tipo,descrip_esp
{ ESTE FUE EL QUERY ORIGINAL, LE QUITE LA TABLA VETB00051 y PRTB00013 PORQUE NO
TRAIA LOS CODIGOS EN LA CONSULTA
"SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp,a.unidad_med,SUM(e.cantidad),SUM(d.cantidad),SUM(b.cantidad_2) ",
" FROM iptb00002 AS a INNER JOIN iptb00001 AS c ON a.cod_n = c.cod_n AND a.cod_grupo = c.cod_grupo AND ",
" a.cod_tipo = c.cod_tipo and a.cod_Sec = c.cod_Sec LEFT OUTER JOIN ",
" iptb00006 AS b ON 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 b.status_t IS NULL LEFT OUTER JOIN ",
" vetb00051 AS e ON a.cod_n = e.cod_n AND a.cod_grupo = e.cod_grupo AND ",
" a.cod_tipo = e.cod_tipo AND a.cod_sec = e.cod_sec LEFT OUTER JOIN ",
" prtb00013 AS d ON ",
" a.cod_n = d.cod_n AND a.cod_grupo = d.cod_grupo AND ",
" a.cod_tipo = d.cod_tipo AND a.cod_sec = d.cod_sec INNER JOIN ",
" prtb00012 AS f ON d.num_oc = f.num_oc and f.cotizacion_no = e.cotizacion_no ",
" AND f.cerrada = 'N' ",
" WHERE a.status_t IS NULL AND ",CRITERIO CLIPPED,
" GROUP BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp,a.unidad_med ",
" ORDER BY a.descrip_esp "
}
LET selec_pt =
"SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp,a.unidad_med,'0','0',SUM(b.cantidad_2) ",
" FROM iptb00002 AS a INNER JOIN iptb00001 AS c ON a.cod_n = c.cod_n AND a.cod_grupo = c.cod_grupo AND ",
" a.cod_tipo = c.cod_tipo and a.cod_Sec = c.cod_Sec LEFT OUTER JOIN ",
" iptb00006 AS b ON 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 b.status_t IS NULL ",
" WHERE a.status_t IS NULL AND ",CRITERIO CLIPPED,
" GROUP BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp,a.unidad_med ",
" ORDER BY a.descrip_esp "
IF int_flag THEN
LET Int_flag = FALSE
CLOSE WINDOW busca_2
RETURN
END IF
PREPARE comando_p FROM selec_pt
DECLARE busca_2 CURSOR FOR comando_p
LET idx = 1
FOREACH busca_2 INTO arr_prod[idx].*
LET idx = idx + 1
END FOREACH
CALL SET_COUNT(idx - 1)
DISPLAY ARRAY arr_prod TO s_prod.*
LET idx = ARR_CURR()
LET arr_cotiza[curr].cod_n = arr_prod[idx].cod_n
LET arr_cotiza[curr].cod_grupo = arr_prod[idx].cod_grupo
LET arr_cotiza[curr].cod_tipo = arr_prod[idx].cod_tipo
LET arr_cotiza[curr].cod_sec = arr_prod[idx].cod_sec
LET arr_cotiza[curr].nombre_p = arr_prod[idx].descrip_esp
LET arr_cotiza[curr].unidad = arr_prod[idx].unidad_med
LET pexistencia = arr_prod[idx].existencia
CLOSE WINDOW busca_2
END FUNCTION
FUNCTION vendedor8es()
OPEN WINDOW busqueda2 AT 7,12 WITH FORM "vefmwd001"
ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST)
LET INT_FLAG = false
CONSTRUCT criterio ON a.nom1_emp FROM descrip6
LET selec2 = "SELECT UNIQUE a.num_emp,a.nom1_emp,a.apell1_emp,a.telefono ",
" FROM adtb00003 a,vetb00028 b",
" WHERE a.num_emp = b.sec_vend AND ",
"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_e
END IF
PREPARE busca_empleados FROM selec2
IF status >= 0 THEN
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
END IF
ELSE
END IF
DECLARE buscar_empleados CURSOR FOR busca_empleados
LET idx = 1
FOREACH buscar_empleados INTO arr_empleados[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 empleados[idx].cod_emp_sec = arr_empleados[idx].num_emp
LET empleados[idx].descrip6 =
arr_empleados[idx].nom1_emp clipped," ",arr_empleados[idx].apell1_emp clipped
LET idx = idx + 1
END FOREACH
CALL set_count(idx-1)
MESSAGE " <Esc> Selecciona Empleado donde esta el cursor"
DISPLAY ARRAY empleados TO s_empleados.*
LET curr1 = scr_line()
IF INT_FLAG THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
GOTO salir_consulta_e
END IF
LET p_vetb50.sec_vend = empleados[curr1].cod_emp_sec
LET nombre_vend = empleados[curr1].descrip6
LABEL salir_consulta_e:
CLOSE WINDOW busqueda2
END FUNCTION
FUNCTION busca_vendm8()
IF p_vetb50.sec_vend IS NOT NULL THEN
SELECT a.nom1_emp,a.apell1_emp INTO nombres,apellidos
FROM adtb00003 a
WHERE a.num_emp = p_vetb50.sec_vend
LET nombre_vend = nombres CLIPPED," ",apellidos CLIPPED
DISPLAY BY NAME nombre_vend ATTRIBUTE(BLUE)
END IF
END FUNCTION
FUNCTION busca_info()
IF p_vetb50.cod_cia = 1 THEN
LET nombre_cia = p_companias.nombre
ELSE
LET nombre_cia = "EMPRESA DEMO 2"
END IF
LET pventas = ui.ComboBox.forName("formonly.ventas")
CALL cventas()
LET pcondicion = ui.ComboBox.forName("formonly.cond_pago")
CALL ccondicion()
LET xorden = NULL
SELECT DISTINCT a.num_oc,a.nombre_file
INTO xorden,orden_cliente FROM prtb00012 a
WHERE a.cotizacion_no = p_vetb50.cotizacion_no AND a.status_t is null
DISPLAY BY NAME p_vetb50.*,nombre_cia
DISPLAY xorden TO orden
LET prtb12.num_oc = xorden
SELECT a.nombre_provincia INTO nombre_ciudad
FROM vetb00020 a
WHERE a.cod_provincia = p_vetb50.cod_provincia
DISPLAY BY NAME nombre_ciudad
# BUSCA BALANCE CON AVANCES
SELECT SUM(a.valor+a.monto_desc) INTO valor1
FROM cctb00001 a
WHERE a.fecha_orig <= today AND
a.tipo_cliente = p_vetb50.tipo_cliente AND
a.sec_cliente = p_vetb50.sec_cliente AND
a.tipo_doc IN ("AV") AND a.num_doc = a.aplica_a AND a.status_t IS NULL
IF valor1 IS NULL THEN
LET valor1 = 0
END IF
# BUSCA BALANCE SIN AVANCES
SELECT SUM(a.valor+a.monto_desc) INTO valor2
FROM cctb00001 a
WHERE a.fecha_orig <= today AND
a.tipo_cliente = p_vetb50.tipo_cliente AND
a.sec_cliente = p_vetb50.sec_cliente AND
a.tipo_doc NOT IN ("AV","PC") AND a.status_t IS NULL
IF valor1 IS NULL THEN
LET valor1 = 0
END IF
LET balancecxc = valor2-valor1
DISPLAY BY NAME balancecxc
CALL arr_cotiza.clear()
DECLARE buscaitm1 CURSOR FOR
SELECT a.area,c.nombre_area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descripcion,b.unidad_med,
a.cantidad_1,a.cantidad,a.precio,a.porc_desc,'0',a.foto_producto
FROM vetb00051 a,iptb00002 b,prtb00016 c
WHERE a.cotizacion_no = p_vetb50.cotizacion_no AND
a.cod_cia = p_vetb50.cod_cia AND
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.area = c.area_num
LET idx = 1
FOREACH buscaitm1 INTO arr_cotiza[idx].*
LET arr_cotiza[idx].total_p = (arr_cotiza[idx].cantidad * arr_cotiza[idx].precio) -
((arr_cotiza[idx].cantidad * arr_cotiza[idx].precio) *
(arr_cotiza[idx].porc_desc / 100))
IF arr_cotiza[idx].nombre_p IS NULL THEN
SELECT a.descrip_esp INTO arr_cotiza[idx].nombre_p
FROM iptb00002 a
WHERE a.cod_n = arr_cotiza[idx].cod_n AND
a.cod_grupo = arr_cotiza[idx].cod_grupo AND
a.cod_tipo = arr_cotiza[idx].cod_tipo AND
a.cod_sec = arr_cotiza[idx].cod_sec
END IF
SELECT UNIQUE a.autoriza INTO arr_cotiza[idx].chactualiza
FROM vetb00088 a
WHERE a.cotizacion_no = p_vetb50.cotizacion_no AND
a.cod_n = arr_cotiza[idx].cod_n AND
a.cod_grupo = arr_cotiza[idx].cod_grupo AND
a.cod_tipo = arr_cotiza[idx].cod_tipo AND
a.cod_sec = arr_cotiza[idx].cod_sec
LET idx = idx + 1
END FOREACH
CALL set_count(idx)
DISPLAY ARRAY arr_cotiza TO s_pedido.*
ON KEY (CONTROL-W)
CALL despiece()
BEFORE ROW
LET idx = arr_curr()
DISPLAY arr_cotiza[idx].ruta TO foto_producto
AFTER DISPLAY
END DISPLAY
END FUNCTION
{
FUNCTION f_canvas()
-- Define parameters
DEFINE porciento ,l_offset SMALLINT
DEFINE test CHAR(1)
-- Define local variables
DEFINE l_span smallint,
l_objid smallint,
valor_cotizado,valor_facturado INT,
str_facturado,str_cotizado CHAR(25),
fecha1 LIKE vetb00002.fecha_factura
LET l_offset = 50
CALL drawinit()
# OPEN WINDOW w_card AT 2,2 WITH FORM "canvas"
-- Select and initialize drawing room
CALL DisableColorlines(0)
CALL DrawSelect("canvas1")
CALL DrawClear()
LET fecha1 = TODAY - 30
SELECT SUM(a.neto) INTO valor_facturado FROM vetb00002 a
WHERE a.fecha_factura BETWEEN fecha1 AND TODAY AND
a.cod_cia = 1 AND
a.status_t is null
SELECT SUM(a.total_neto) INTO valor_cotizado FROM vetb00050 a
WHERE a.cod_cia = 1 AND
a.fecha BETWEEN fecha1 AND TODAY AND a.status_t is null
# LET valor_facturado = 500000
# LET valor_cotizado = 2000000
LET Porciento = (valor_facturado / valor_cotizado) * 100
LET l_span = 360 * (porciento / 100)
-- Select the color for the first arc
CALL DrawFillColor("blue")
-- Draw the first arc.
# LET l_span = 0
CALL DrawArc(900,200,600,0,100) RETURNING l_objid
# CALL DrawArc(900,200,600,0,l_span) RETURNING l_objid
-- Compute the next arc.
# LET l_span = l_offset
LET l_offset = l_span
LET l_offset = 360 - l_span
CALL drawfillcolor("red")
CALL DrawArc(900,200,600,100,260) RETURNING l_objid
# CALL DrawArc(900,200,600,l_span,l_offset) RETURNING l_objid
-- Write the legend
LET str_facturado = "Facturado ",valor_facturado USING "<<,<<<,<<<"
LET str_cotizado = "Cotizado ", Valor_cotizado USING "##,###,###"
CALL drawanchor("w")
CALL drawtext(200,90, str_facturado) RETURNING l_objid
CALL drawtext(100,90, str_cotizado) RETURNING l_objid
CALL drawfillcolor("blue")
CALL drawrectangle(180,50,30,30) RETURNING l_objid
CALL drawfillcolor("red")
CALL drawrectangle(80,50,30,30) RETURNING l_objid
# PROMPT "Press a key Con 300 : " FOR test
# CLOSE WINDOW w_card
END FUNCTION
}
FUNCTION chqDdeError(p_res,p_msg)
DEFINE p_res INTEGER,
p_msg STRING,
m_err STRING,
m_log STRING
IF p_res THEN
RETURN
END IF
CALL ui.Interface.frontCall("WINDDE","DDEError",[],[m_err])
CALL ui.Interface.frontCall("WINDDE","DDEFinishAll", [], [p_res] )
LET m_log="DDE Error: ",m_err CLIPPED," (",p_msg,")"
CALL errorlog(m_log)
LET m_log="Se ha producido un Error en '",p_msg CLIPPED,"'. Para mas detalle revise el LOG de errores."
CALL fgl_winmessage("DDE Error", m_log, "stop")
EXIT PROGRAM
END FUNCTION
FUNCTION pru_new_dde(xval,xcol,i)
DEFINE celda,rval,xval,xcol STRING
DEFINE i INTEGER
LET celda = fila_excel,i USING "<<<<&",xcol CLIPPED
LET rval = xval
CALL ui.Interface.frontCall("WINDDE","DDEPoke", [prog,file,celda,rval], [p_res] )
CALL chqDdeError(p_res,"DDEPoke "||celda)
{
MESSAGE "Salvando la planilla ",file CLIPPED," !"
CALL ui.Interface.refresh()
LET p_cmd="[save()]"
CALL ui.Interface.frontCall("WINDDE","DDEExecute", [prog,file,p_cmd], [p_res] )
IF p_res THEN
CALL fgl_winmessage("Planilla salvada", "Nombre = "||file, "information")
ELSE
CALL chqDdeError(p_res,"DDEExecute save")
END IF
CAL ui.Interface.frontCall("WINDDE","DDEFinish", [prog,file], [p_res] )
CALL chqDdeError(p_res,"DDEFinish")
CALL ui.Interface.frontCall("WINDDE","DDEFinishAll", [], [p_res] )
CALL chqDdeError(p_res,"DDEFinishAll")
}
END FUNCTION
FUNCTION cotizacion_display()
DEFINE arr_display DYNAMIC ARRAY OF RECORD
cotizacion_no INTEGER,
fecha DATE,
nombre_cliente CHAR(50),
nombre_proyecto CHAR(50)
END RECORD
OPEN WINDOW cotizaciones WITH FORM "vefmmt149"
DECLARE busca_cotiza CURSOR FOR
SELECT a.cotizacion_no,a.fecha,a.nombre_cliente,a.nombre_proyecto FROM vetb00050 a
WHERE a.sec_Vend = pvend
ORDER BY a.fecha DESC
LET idx = 1
FOREACH busca_cotiza INTO arr_display[idx].*
LET idx = idx + 1
END FOREACH
CALL set_count(idx-1)
DISPLAY ARRAY arr_display TO s_cotiza.*
AFTER DISPLAY
LET idx = arr_curr()
EXIT DISPLAY
END DISPLAY
END FUNCTION
FUNCTION despiece()
DEFINE vuelve BOOLEAN
OPEN WINDOW wdespiece AT 5,3 WITH FORM "vefmwd019" ATTRIBUTE (BORDER,FORM LINE
FIRST + 1,PROMPT LINE LAST)
DISPLAY arr_cotiza[curr].nombre_p TO descrip_esp ATTRIBUTE(BLUE)
DISPLAY arr_cotiza[curr].unidad TO unidad_med ATTRIBUTE(BLUE)
DISPLAY arr_cotiza[curr].area TO area ATTRIBUTE(BLUE)
DISPLAY arr_cotiza[curr].nombre_area TO descripcion_area ATTRIBUTE(BLUE)
CALL despiece.clear()
IF actualiza = "N" THEN
LET p_vetb50.cotizacion_no = tmpnumero1
DECLARE busca_despiece CURSOR FOR
SELECT a.etiqueta,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 = p_vetb50.cotizacion_no AND
# a.secuencia = curr AND
a.area = arr_cotiza[curr].area AND
a.cod_n = arr_cotiza[curr].cod_n AND
a.cod_grupo = arr_cotiza[curr].cod_grupo AND
a.cod_tipo = arr_cotiza[curr].cod_tipo AND
a.cod_sec = arr_cotiza[curr].cod_sec
LET idx = 1
FOREACH busca_despiece INTO despiece[idx].*
LET idx = idx + 1
END FOREACH
ELSE
DECLARE busca_despiece1 CURSOR FOR
SELECT a.etiqueta,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 = p_vetb50.cotizacion_no AND
#a.secuencia = curr AND
a.area = arr_cotiza[curr].area AND
a.cod_n = arr_cotiza[curr].cod_n AND
a.cod_grupo = arr_cotiza[curr].cod_grupo AND
a.cod_tipo = arr_cotiza[curr].cod_tipo AND
a.cod_sec = arr_cotiza[curr].cod_sec
LET idx = 1
FOREACH busca_despiece1 INTO despiece[idx].*
LET idx = idx + 1
END FOREACH
END IF
# LET despiece[1].cod_n = arr_cotiza[curr].cod_n
# LET despiece[1].cod_grupo = arr_cotiza[curr].cod_grupo
# LET despiece[1].cod_tipo = arr_cotiza[curr].cod_tipo
# LET despiece[1].cod_sec = arr_cotiza[curr].cod_sec
CALL set_count(idx-1)
INPUT ARRAY despiece WITHOUT DEFAULTS FROM sdespiece.*
BEFORE ROW
LET curr1 = arr_curr()
LET fila = scr_line()
# LET petiquetas = ui.ComboBox.forName("formonly.etiqueta")
CALL cetiquetas()
LET despiece[curr1].cod_n = arr_cotiza[curr].cod_n
LET despiece[curr1].cod_grupo = arr_cotiza[curr].cod_grupo
LET despiece[curr1].cod_tipo = arr_cotiza[curr].cod_tipo
LET despiece[curr1].cod_sec = arr_cotiza[curr].cod_sec
IF curr1 > 1 THEN
IF despiece[curr1].etiqueta IS NULL THEN
LET despiece[curr1].etiqueta = despiece[curr1-1].etiqueta
END IF
END IF
DISPLAY despiece[curr1].etiqueta TO sdespiece[fila].etiqueta
DISPLAY arr_cotiza[curr].cod_n TO sdespiece[fila].cod_n
DISPLAY arr_cotiza[curr].cod_grupo TO sdespiece[fila].cod_grupo
DISPLAY arr_cotiza[curr].cod_tipo TO sdespiece[fila].cod_tipo
DISPLAY arr_cotiza[curr].cod_sec TO sdespiece[fila].cod_sec
AFTER FIELD cantidad
IF arr_cotiza[curr].unidad = "M2" THEN
LET despiece[curr1].medida =
despiece[curr1].cantidad * (despiece[curr1].lado_1 * despiece[curr1].lado_2)
END IF
IF arr_cotiza[curr].unidad= "M3" THEN
LET despiece[curr1].medida =
despiece[curr1].cantidad * (despiece[curr1].lado_1 * despiece[curr1].lado_2 * despiece[curr1].lado_3)
END IF
IF arr_cotiza[curr].unidad= "ML" THEN
LET despiece[curr1].medida =
despiece[curr1].cantidad * despiece[curr1].lado_1
LET despiece[curr1].lado_2 = 0
END IF
IF arr_cotiza[curr].unidad= "UD" OR arr_cotiza[curr].unidad= "GL" THEN
LET despiece[curr1].medida = despiece[curr1].cantidad
END IF
DISPLAY despiece[curr1].medida TO sdespiece[fila].medida
AFTER ROW
IF despiece[curr1].medida IS NULL AND despiece[curr1].lado_1 IS NOT NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD lado_1
END IF
LET total_medida = 0
FOR idx = 1 TO arr_count()
IF despiece[idx].medida IS NOT NULL THEN
LET total_medida = total_medida + despiece[idx].medida
END IF
END FOR
DISPLAY BY NAME total_medida
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
EXIT INPUT
END IF
LET total_medida = 0
LET vuelve = FALSE
FOR idx = 1 TO arr_count()
IF despiece[idx].medida IS NOT NULL THEN
IF despiece[idx].etiqueta IS NULL THEN
LET vuelve = TRUE
EXIT FOR
END IF
LET total_medida = total_medida + despiece[idx].medida
END IF
END FOR
IF vuelve THEN
CALL msg(16)
NEXT FIELD medida
CONTINUE INPUT
END IF
DISPLAY BY NAME total_medida
END INPUT
IF int_flag THEN
LET int_flag = FALSE
RETURN
END IF
# CONTROL NUMERICO
BEGIN WORK
WHENEVER ERROR CONTINUE
DELETE FROM veTB00022 WHERE cotizacion_no = p_vetb50.cotizacion_no AND
# secuencia = curr AND
area = arr_cotiza[curr].area AND
cod_n = arr_cotiza[curr].cod_n AND
cod_grupo = arr_cotiza[curr].cod_grupo AND
cod_tipo = arr_cotiza[curr].cod_tipo AND
cod_sec = arr_cotiza[curr].cod_sec
IF SQLSTATE > 02 THEN
LET chmensaje = SQLERRMESSAGE CLIPPED,"NO ES POSIBLE GUARDAR LA TRANSACCION"
ROLLBACK WORK
CALL fgl_winmessage("ERROR",chmensaje,"STOP")
RETURN
END IF
LET total_medida = 0
FOR idx = 1 TO arr_count()
IF despiece[idx].medida IS NOT NULL THEN
INSERT INTO vetb00022 VALUES (despiece[idx].etiqueta,p_vetb50.cotizacion_no,curr,
arr_cotiza[curr].area,arr_cotiza[curr].cod_n,arr_cotiza[curr].cod_grupo,
arr_cotiza[curr].cod_tipo,arr_cotiza[curr].cod_sec,
despiece[idx].lado_1,despiece[idx].lado_2,
despiece[idx].lado_3,despiece[idx].cantidad,
despiece[idx].medida,null,SUSER_SNAME(),GETDATE(),null,null)
IF SQLSTATE > 02 THEN
LET chmensaje = SQLERRMESSAGE CLIPPED,"NO ES POSIBLE GUARDAR LA TRANSACCION"
ROLLBACK WORK
CALL fgl_winmessage("ERROR",chmensaje,"STOP")
RETURN
END IF
LET total_medida = total_medida + despiece[idx].medida
END IF
END FOR
COMMIT WORK
LET arr_cotiza[curr].cantidad_1 = total_medida
CLOSE WINDOW wdespiece
END FUNCTION
FUNCTION control_vendedor(xvendedor,xtipo,xcliente)
DEFINE xvendedor SMALLINT,
xtipo,xcliente INT,
existe BOOLEAN
# CONTROL VENDEDOR
LET existe = FALSE
IF xtipo IS NOT NULL THEN
SELECT UNIQUE a.sec_vend FROM vetb00028 a
WHERE a.tipo_cliente = xtipo AND
a.sec_cliente = xcliente and
a.sec_vend = xvendedor and
a.status_t is null
IF STATUS = NOTFOUND THEN
CALL fgl_winmessage("ERROR","USTED NO PUEDE VENDERLE A ESTE CLIENTE, TIENE EJECUTIVO ASINADO","STOP")
LET existe = TRUE
END IF
END IF
RETURN existe
END FUNCTION
FUNCTION busca_descripcion()
DEFINE pdescripcion LIKE iptb00002.descrip_esp
SELECT a.descrip_esp INTO pdescripcion
FROM iptb00002 a
WHERE a.cod_n = arr_cotiza[curr].cod_n AND
a.cod_grupo = arr_cotiza[curr].cod_grupo AND
a.cod_tipo = arr_cotiza[curr].cod_tipo AND
a.cod_sec = arr_cotiza[curr].cod_sec
RETURN pdescripcion
END FUNCTION