2394 lines
91 KiB
Plaintext
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 |