1241 lines
48 KiB
Plaintext
1241 lines
48 KiB
Plaintext
{
|
|
------------------------------------------------------------------
|
|
PROGRAMA : VEPRMT101
|
|
OBJETIVO : Capturar, Modificar, Eliminar registros de la
|
|
Tabla de Datos Generales o Basicos de Clientes
|
|
PROGRAMADOR : Lic. Abner Montalvo Z.
|
|
FECHA REALIZACION : Diciembre 7, 1992.
|
|
------------------------------------------------------------------
|
|
}
|
|
GLOBALS "veprgb000.4gl"
|
|
DEFINE valor,valor1,balance DECIMAL(12,2),
|
|
pid,cuenta_contacto,num_emp SMALLINT,
|
|
n1,n2 CHAR(15),
|
|
nombre_v CHAR(31),
|
|
role_puesto VARCHAR(50),
|
|
arrContactos DYNAMIC ARRAY OF RECORD
|
|
pcontacto VARCHAR(60),
|
|
ppuesto VARCHAR(60),
|
|
email_contacto VARCHAR(60),
|
|
telefono_of CHAR(20),
|
|
celular CHAR(20),
|
|
ptelefono_casa CHAR(20)
|
|
END RECORD
|
|
DEFINE pinfo DYNAMIC ARRAY OF RECORD
|
|
num_oc INT,
|
|
fecha CHAR(10),
|
|
cotizacion_no INT,
|
|
valor DEC(12,2),
|
|
status_ord CHAR(30)
|
|
END RECORD
|
|
|
|
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
CONNECT TO "exterior" AS "IFMX"
|
|
CONNECT TO "smarmotech" AS "MSSQL" USER usuarios USING clave
|
|
CALL veprmt101()
|
|
|
|
END MAIN
|
|
FUNCTION veprmt101()
|
|
|
|
#CLEAR SCREEN
|
|
|
|
OPTIONS
|
|
#FORM LINE 9,
|
|
ERROR LINE 23,
|
|
HELP FILE "vepray000.exe",
|
|
HELP KEY CONTROL-W,
|
|
MESSAGE LINE 24,
|
|
COMMENT LINE 21
|
|
|
|
#OPEN FORM vefmmt101 FROM "vefmmt101"
|
|
#DISPLAY FORM vefmmt101
|
|
OPEN WINDOW vefmmt101 AT 2,2 WITH FORM "vefmmt101" ATTRIBUTE
|
|
(BORDER,FORM LINE FIRST+4,COMMENT LINE LAST)
|
|
#CALL pantalla()
|
|
#CALL ayuda()
|
|
#DISPLAY "veprmt101" AT 4,3
|
|
#DISPLAY "Datos Generales" AT 6,32
|
|
INITIALIZE cliente_bas.* TO NULL
|
|
INITIALIZE cliente_dir.* TO NULL
|
|
|
|
MENU
|
|
|
|
ON ACTION nuevo
|
|
LET int_flag = FALSE
|
|
SET CONNECTION "MSSQL"
|
|
CLEAR FORM
|
|
CALL vepcad101()
|
|
ON ACTION buscar
|
|
LET int_flag = FALSE
|
|
SET CONNECTION "MSSQL"
|
|
CALL vepcmf101()
|
|
|
|
ON ACTION activar
|
|
|
|
|
|
LET INT_FLAG = FALSE
|
|
#CLEAR FORM
|
|
INPUT BY NAME cliente_bas.tipo_cliente,cliente_bas.sec_cliente
|
|
AFTER FIELD sec_cliente
|
|
IF cliente_bas.sec_cliente is NULL or
|
|
cliente_bas.sec_cliente = 0 then
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD sec_cliente
|
|
ELSE
|
|
SELECT a.* INTO cliente_bas.* FROM vetb00004 a
|
|
WHERE a.tipo_cliente = cliente_bas.tipo_cliente AND
|
|
a.sec_cliente = cliente_bas.sec_cliente AND
|
|
a.status_t IS NULL
|
|
|
|
IF status != NOTFOUND THEN
|
|
LET numero_msg = 12
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo_cliente
|
|
END IF
|
|
DISPLAY BY NAME cliente_bas.*
|
|
|
|
# BUSCA SI EL CLIENTE PAGA ITBIS
|
|
LET kitbis = 'N'
|
|
SELECT a.paga_itbis INTO kitbis FROM vetb00060 a
|
|
WHERE a.tipo_cliente = clliente_bas.tipo_cliente
|
|
|
|
|
|
END IF
|
|
END INPUT
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
|
|
UPDATE vetb00004 SET (status_t,us_mod,fech_mod) = (NULL,SUSER_SNAME(),GETDATE())
|
|
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
|
|
sec_cliente = cliente_bas.sec_cliente
|
|
|
|
UPDATE vetb00005 SET (status_t,us_mod,fech_mod) = (NULL,SUSER_SNAME(),GETDATE())
|
|
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
|
|
sec_cliente = cliente_bas.sec_cliente
|
|
|
|
UPDATE vetb00006 SET (status_t,us_mod,fech_mod) = (NULL,SUSER_SNAME(),GETDATE())
|
|
WHERE tipo_cliente_s = cliente_bas.tipo_cliente AND
|
|
sec_cliente_s = cliente_bas.sec_cliente
|
|
|
|
UPDATE vetb00028 SET (status_t,us_mod,fech_mod) = (NULL,SUSER_SNAME(),GETDATE())
|
|
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
|
|
sec_cliente = cliente_bas.sec_cliente
|
|
|
|
IF kitbis = 'S' THEN
|
|
SET CONNECTION "IFMX"
|
|
|
|
|
|
UPDATE vetb00004 SET (status_t,us_mod,fech_mod) = (NULL,user,current)
|
|
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
|
|
sec_cliente = cliente_bas.sec_cliente
|
|
END IF
|
|
LET numero_msg = 188
|
|
CALL msg(numero_msg)
|
|
|
|
ON ACTION salir
|
|
LET INT_FLAG = FALSE
|
|
EXIT PROGRAM
|
|
END MENU
|
|
LET INT_FLAG = FALSE
|
|
CLOSE WINDOW vefmmt101
|
|
END FUNCTION
|
|
|
|
FUNCTION vepcad101()
|
|
## Captura los datos que va a contener el registro
|
|
|
|
# WHENEVER ERROR CONTINUE
|
|
|
|
DIALOG ATTRIBUTES(UNBUFFERED,FIELD ORDER FORM)
|
|
|
|
INPUT BY NAME cliente_bas.tipo_cliente,
|
|
cliente_bas.zona_postal,cliente_bas.num_rnc,
|
|
cliente_bas.nombre,cliente_bas.limite_credito,cliente_bas.cond_pago,
|
|
cliente_bas.tipo_negocio,
|
|
cliente_dir.calle,cliente_dir.casa_num,
|
|
cliente_dir.urbanizacion,cliente_dir.barrio,
|
|
cliente_bas.cod_zona,
|
|
cliente_bas.cod_provincia,
|
|
cliente_bas.id_ciudad,
|
|
cliente_bas.telefono,
|
|
cliente_bas.fax,cliente_bas.telex,
|
|
cliente_bas.telefono_casa,
|
|
|
|
cliente_bas.us_crea,cliente_bas.fech_crea,
|
|
cliente_bas.us_mod,cliente_bas.fech_mod,num_emp
|
|
BEFORE FIELD limite_credito
|
|
SELECT a.nom_puesto INTO role_puesto
|
|
FROM seg0003 a
|
|
WHERE a.usuario = usuarios
|
|
|
|
IF role_puesto <> 'ADMINISTRATOR' AND
|
|
role_puesto <> 'CXC' THEN
|
|
NEXT FIELD tipo_negocio
|
|
END IF
|
|
BEFORE INPUT
|
|
CALL ctipoNegocio()
|
|
LET pcondicion = ui.combobox.forname("formonly.cond_pago")
|
|
CALL ccondicion()
|
|
|
|
|
|
ON KEY (CONTROL-W)
|
|
CASE
|
|
WHEN INFIELD (cod_zona)
|
|
CALL consulta_zonas()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_zona
|
|
END IF
|
|
|
|
IF NOT int_flag THEN
|
|
LET cliente_bas.cod_zona = zona.cod_zona
|
|
DISPLAY descrip1 TO descripcion_zona
|
|
NEXT FIELD cod_provincia
|
|
END IF
|
|
LET int_flag = FALSE
|
|
|
|
WHEN INFIELD (cod_provincia)
|
|
LET transportista.cod_zona = cliente_bas.cod_zona
|
|
CALL consulta_provincias()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_provincia
|
|
END IF
|
|
|
|
IF NOT int_flag THEN
|
|
LET cliente_bas.cod_provincia = zonap.cod_provincia
|
|
DISPLAY descrip1 TO descripcion_provincia
|
|
NEXT FIELD telefono
|
|
END IF
|
|
|
|
WHEN INFIELD (num_emp)
|
|
CALL vend_cli()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_emp
|
|
END IF
|
|
IF NOT int_flag THEN
|
|
LET num_emp = cli_vend1[curr].num_emp
|
|
DISPLAY num_emp,nombre_v
|
|
END IF
|
|
|
|
LET int_flag = FALSE
|
|
END CASE
|
|
|
|
## Verifica que el codigo no exista en la tabla de datos basicos de clientes.
|
|
## Si existe, entonces despliega los datos del registro existente.
|
|
AFTER FIELD num_rnc
|
|
IF cliente_bas.tipo_cliente < 17 THEN
|
|
IF cliente_bas.num_rnc IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_rnc
|
|
END IF
|
|
LET cliente_bas.num_rnc=cliente_bas.num_rnc CLIPPED
|
|
IF cliente_bas.zona_postal = '1' THEN
|
|
IF LENGTH(cliente_bas.num_rnc) <> 9 THEN
|
|
LET numero_msg = 77
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_rnc
|
|
END IF
|
|
ELSE
|
|
IF LENGTH(cliente_bas.num_rnc) <> 11 THEN
|
|
LET numero_msg = 77
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_rnc
|
|
END IF
|
|
END IF
|
|
|
|
LET VECES = 0
|
|
SELECT UNIQUE a.tipo_cliente FROM vetb00004 a
|
|
WHERE a.num_rnc = cliente_bas.num_rnc AND
|
|
a.tipo_cliente = cliente_bas.tipo_cliente and
|
|
a.status_t is null
|
|
|
|
|
|
IF STATUS <> NOTFOUND THEN
|
|
LET numero_msg = 12
|
|
CALL msg(numero_msg)
|
|
NEXT field num_rnc
|
|
END IF
|
|
|
|
LET VECES = 0
|
|
SELECT COUNT(*) INTO veces FROM vetb00004 a
|
|
WHERE a.num_rnc = cliente_bas.num_rnc AND
|
|
a.tipo_cliente = cliente_bas.tipo_cliente and
|
|
a.status_t is null
|
|
|
|
|
|
IF veces >= 1 THEN
|
|
LET numero_msg = 12
|
|
CALL msg(numero_msg)
|
|
NEXT field num_rnc
|
|
END IF
|
|
#BUSCA EL RNC EN LA TABLA DE LA DGII
|
|
|
|
IF kitbis = 'S' AND cliente_bas.zona_postal ='1' THEN
|
|
LET selec =
|
|
"SELECT a.razon_social,RTRIM(a.calle),' NO.'+RTRIM(a.no_local),a.sector ",
|
|
"FROM DGII.dbo.empresas a ",
|
|
"WHERE a.rnc = ? "
|
|
|
|
PREPARE query2 FROM selec
|
|
EXECUTE query2 USING cliente_bas. num_rnc INTO cliente_bas.nombre,cliente_dir.calle,
|
|
cliente_dir.casa_num,cliente_dir.urbanizacion
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL msg(3)
|
|
# NEXT FIELD num_rnc
|
|
END IF
|
|
DISPLAY BY NAME cliente_bas.nombre
|
|
END IF
|
|
|
|
|
|
END IF
|
|
|
|
|
|
AFTER FIELD tipo_cliente
|
|
IF cliente_bas.tipo_cliente is NULL or
|
|
cliente_bas.tipo_cliente = 0 then
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo_cliente
|
|
END IF
|
|
# BUSCA SI EL CLIENTE PAGA ITBIS
|
|
LET kitbis = 'N'
|
|
SELECT a.paga_itbis INTO kitbis FROM vetb00060 a
|
|
WHERE a.tipo_cliente = cliente_bas.tipo_cliente
|
|
|
|
|
|
AFTER FIELD nombre
|
|
IF cliente_bas.nombre IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD nombre
|
|
END IF
|
|
|
|
AFTER FIELD cod_zona
|
|
IF cliente_bas.cod_zona is NULL then
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_zona
|
|
END IF
|
|
|
|
SELECT descrip INTO descrip1 FROM vetb00008
|
|
WHERE cod_zona = cliente_bas.cod_zona AND status_t IS NULL
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 43
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_zona
|
|
END IF
|
|
DISPLAY descrip1 TO descripcion_zona
|
|
NEXT FIELD cod_provincia
|
|
|
|
|
|
AFTER FIELD cod_provincia
|
|
IF cliente_bas.cod_provincia is NULL then
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_provincia
|
|
END IF
|
|
SELECT b.nombre_provincia, b.status_t
|
|
INTO descrip1, status_reg FROM vetb00009 a, vetb00020 b
|
|
WHERE a.cod_zona = cliente_bas.cod_zona AND
|
|
a.cod_provincia = cliente_bas.cod_provincia AND
|
|
b.cod_provincia = a.cod_provincia
|
|
|
|
IF status >= 0 THEN
|
|
IF status != NOTFOUND THEN
|
|
IF status_reg = "E" THEN
|
|
LET numero_msg = 66
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_provincia
|
|
END IF
|
|
DISPLAY descrip1 TO descripcion_provincia
|
|
ELSE
|
|
LET numero_msg = 65
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_zona
|
|
END IF
|
|
END IF
|
|
CALL ciudad_pais(cliente_bas.cod_provincia)
|
|
|
|
#CALL veprmt102(cliente_bas.tipo_cliente,cliente_bas.sec_cliente)
|
|
#CALL veprmt106(cliente_bas.tipo_cliente,cliente_bas.sec_cliente)
|
|
BEFORE FIELD num_emp
|
|
# CONTROL VENDEDOR
|
|
SELECT a.sec_vend INTO num_emp
|
|
FROM seg0000 a
|
|
WHERE a.usuario = suser_sname()
|
|
|
|
DISPLAY BY NAME num_emp
|
|
|
|
AFTER FIELD num_emp
|
|
IF num_emp IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_emp
|
|
END IF
|
|
|
|
SELECT UNIQUE a.nom1_emp,a.apell1_emp INTO n1,n2
|
|
FROM adtb00003 a
|
|
WHERE (a.status_t IS NULL OR a.status_t = "I") AND a.num_emp = num_emp
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_emp
|
|
END IF
|
|
|
|
LET nombre_v = n1 CLIPPED," ",n2 CLIPPED
|
|
DISPLAY BY NAME nombre_v
|
|
|
|
AFTER INPUT
|
|
|
|
IF num_emp IS NULL OR num_emp = 0 THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_emp
|
|
END IF
|
|
IF cliente_bas.cod_provincia IS NULL OR cliente_bas.cod_provincia = 0 THEN
|
|
CALL msg(16)
|
|
NEXT FIELD cod_provincia
|
|
END IF
|
|
|
|
SELECT UNIQUE a.nom1_emp,a.apell1_emp INTO n1,n2
|
|
FROM adtb00003 a
|
|
WHERE (a.status_t IS NULL OR a.status_t = "I") AND a.num_emp = num_emp
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_emp
|
|
END IF
|
|
|
|
LET nombre_v = n1 CLIPPED," ",n2 CLIPPED
|
|
DISPLAY BY NAME nombre_v
|
|
|
|
|
|
|
|
END INPUT
|
|
INPUT ARRAY arrContactos FROM scontactos.*
|
|
|
|
END INPUT
|
|
ON ACTION CANCEL
|
|
|
|
CALL MSG(2)
|
|
LET INT_FLAG = FALSE
|
|
RETURN
|
|
|
|
ON ACTION actualiza
|
|
# BUSCA EL MAXIMO NUMERO DEL TIPO DE CLIENTE
|
|
SELECT MAX(a.sec_cliente) INTO cliente_bas.sec_cliente
|
|
FROM vetb00004 a
|
|
WHERE a.tipo_cliente = cliente_bas.tipo_cliente
|
|
IF cliente_bas.sec_cliente IS NULL THEN
|
|
LET cliente_bas.sec_cliente = 1
|
|
END IF
|
|
LET cliente_bas.sec_cliente = cliente_bas.sec_cliente + 1
|
|
DISPLAY BY NAME cliente_bas.sec_cliente
|
|
DISPLAY cliente_Bas.tipo_cliente,' sec ',cliente_Bas.sec_cliente
|
|
## WHENEVER ERROR CONTINUE
|
|
BEGIN WORK
|
|
INSERT INTO vetb00004
|
|
(tipo_cliente,sec_cliente,nombre,cod_zona,cod_provincia,
|
|
telefono,fax,telex,limite_credito,zona_postal,num_rnc,
|
|
status_t,us_crea,fech_crea,telefono_casa,tipo_negocio,cond_pago,id_ciudad)
|
|
VALUES (cliente_bas.tipo_cliente,cliente_bas.sec_cliente,
|
|
cliente_bas.nombre,cliente_bas.cod_zona,cliente_bas.cod_provincia,
|
|
cliente_bas.telefono,cliente_bas.fax,cliente_bas.telex,
|
|
cliente_bas.limite_credito,
|
|
cliente_bas.zona_postal,cliente_bas.num_rnc,
|
|
NULL,SUSER_SNAME(),GETDATE(),cliente_bas.telefono_casa,
|
|
cliente_bas.tipo_negocio,cliente_bas.cond_pago,cliente_bas.id_ciudad)
|
|
IF STATUS < 0 THEN
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage("ERROR","NO PUDE ADICIONAR CLIENTE","STOP")
|
|
EXIT PROGRAM
|
|
END IF
|
|
|
|
INSERT INTO vetb00005 VALUES (cliente_bas.tipo_cliente,
|
|
cliente_bas.sec_cliente,
|
|
cliente_dir.calle,
|
|
cliente_dir.casa_num,
|
|
cliente_dir.barrio,
|
|
cliente_dir.urbanizacion,
|
|
null,
|
|
null, SUSER_SNAME(), GETDATE(),
|
|
null, null)
|
|
IF STATUS < 0 THEN
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage("ERROR","NO PUDE ADICIONAR CLIENTE","STOP")
|
|
EXIT PROGRAM
|
|
END IF
|
|
|
|
INSERT INTO vetb00028
|
|
VALUES (NULL,num_emp,cliente_bas.tipo_cliente,cliente_bas.sec_cliente,
|
|
NULL,SUSER_SNAME(),GETDATE(),NULL,NULL)
|
|
IF STATUS < 0 THEN
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage("ERROR","NO PUDE ADICIONAR CLIENTE","STOP")
|
|
EXIT PROGRAM
|
|
END IF
|
|
LET cuenta_contacto = arr_count()
|
|
LET pid = 0
|
|
FOR idx = 1 TO cuenta_contacto
|
|
IF arrcontactos[idx].pcontacto IS NOT NULL THEN
|
|
LET pid = pid + 1
|
|
INSERT INTO vetb00087 (tipo_cliente,sec_cliente,contacto,puesto,email,celular,
|
|
telefono_of,telefono_casa,id,us_crea,fech_crea)
|
|
VALUES
|
|
(cliente_bas.tipo_cliente,cliente_Bas.sec_cliente,
|
|
arrContactos[idx].pcontacto,arrContactos[idx].ppuesto,
|
|
arrContactos[idx].email_contacto,arrContactos[idx].celular,
|
|
arrContactos[idx].telefono_of,arrContactos[idx].ptelefono_casa,pid,
|
|
usuarios,getdate())
|
|
IF STATUS < 0 THEN
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage("ERROR","NO PUDE ADICIONAR CLIENTE","STOP")
|
|
EXIT PROGRAM
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
COMMIT WORK
|
|
|
|
IF kitbis = 'S' THEN
|
|
SET CONNECTION "IFMX"
|
|
|
|
INSERT INTO vetb00004
|
|
VALUES (cliente_bas.tipo_cliente,cliente_bas.sec_cliente,
|
|
cliente_bas.nombre,cliente_bas.cod_zona,cliente_bas.cod_provincia,
|
|
cliente_bas.telefono,cliente_bas.fax,cliente_bas.telex,
|
|
cliente_bas.patente,cliente_bas.limite_credito,
|
|
cliente_bas.zona_postal,cliente_bas.num_rnc,
|
|
cliente_bas.nombre_patente,NULL,user,current,NULL,NULL)
|
|
|
|
INSERT INTO vetb00028
|
|
VALUES (NULL,num_emp,cliente_bas.tipo_cliente,cliente_bas.sec_cliente,
|
|
NULL,user,current,NULL,NULL)
|
|
END IF
|
|
LET numero_msg = 1
|
|
CALL msg(numero_msg)
|
|
EXIT DIALOG
|
|
END DIALOG
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION vepcmf101()
|
|
# WHENEVER ERROR CONTINUE
|
|
|
|
LET int_flag = false
|
|
## Aqui se prepara para la captura del criterio de seleccion
|
|
|
|
DIALOG ATTRIBUTES(UNBUFFERED,FIELD ORDER FORM)
|
|
|
|
CONSTRUCT criterio ON a.num_rnc,b.sec_vend,a.tipo_cliente,a.sec_cliente,
|
|
a.nombre,a.telefono,a.telefono_casa
|
|
FROM num_rnc1,kvendedor,tipo_cliente2,sec_cliente2,nombre2,telefono2,telefono3
|
|
BEFORE CONSTRUCT
|
|
CALL lista_clientes.clear()
|
|
CALL cvendedor()
|
|
|
|
ON ACTION busca_cliente
|
|
|
|
CALL lista_clientes.clear()
|
|
LET SELEC = " SELECT a.num_rnc,RTRIM(CAST(ISNULL(c.nom1_emp,' ') AS CHAR(30)))+' ' +
|
|
CAST(ISNULL(c.apell1_emp,' ') AS CHAR(30)),a.tipo_cliente,a.sec_cliente, ",
|
|
" a.nombre,a.telefono,a.telefono_casa FROM vetb00004 a,vetb00028 b,adtb00003 c ",
|
|
" WHERE a.tipo_cliente = b.tipo_cliente and a.sec_cliente = b.sec_cliente and ",
|
|
" b.sec_vend = c.num_emp and a.status_t is NULL AND ",
|
|
criterio clipped," ORDER BY a.tipo_cliente,a.sec_cliente"
|
|
|
|
|
|
PREPARE busca FROM selec
|
|
DECLARE datos CURSOR FOR busca
|
|
CALL lista_clientes.clear()
|
|
LET idx = 1
|
|
FOREACH datos INTO lista_clientes[idx].*
|
|
# busca ultima factura realizada
|
|
SELECT CONVERT(CHAR(10),MAX(a.fecha_factura),103)
|
|
INTO lista_clientes[idx].fecha_venta
|
|
FROM vetb00002 a
|
|
WHERE a.tipo_cliente = lista_clientes[idx].tipo_cliente2 AND
|
|
a.sec_cliente = lista_clientes[idx].sec_cliente2 AND
|
|
a.status_t IS NULL
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
IF idx = 1 THEN
|
|
CALL fgl_winmessage("ERROR","NO EXISTEN CLIENTES CON ESTA CONDICION","INFO")
|
|
EXIT DIALOG
|
|
END IF
|
|
CALL set_count(idx-1)
|
|
|
|
DISPLAY ARRAY lista_clientes TO sclientes.*
|
|
BEFORE DISPLAY
|
|
LET curr = arr_curr()
|
|
SELECT a.* INTO cliente_bas.* FROM vetb00004 a
|
|
WHERE a.tipo_cliente = lista_clientes[curr].tipo_cliente2 AND
|
|
a.sec_cliente = lista_clientes[curr].sec_cliente2
|
|
LET cliente_bas.tipo_cliente = lista_clientes[curr].tipo_cliente2
|
|
LET cliente_bas.sec_cliente = lista_clientes[curr].sec_cliente2
|
|
CALL arrcontactos.clear()
|
|
CALL busca_info(DIALOG,arr_curr())
|
|
|
|
DISPLAY BY NAME cliente_bas.tipo_cliente,cliente_bas.sec_cliente,
|
|
cliente_bas.cod_provincia,cliente_bas.cod_zona,cliente_bas.cond_pago,
|
|
cliente_bas.fax,cliente_bas.fech_crea,cliente_bas.fech_mod,cliente_bas.limite_credito,
|
|
cliente_bas.nombre,cliente_bas.num_rnc,cliente_bas.status_t,cliente_bas.telefono,
|
|
cliente_bas.telefono_casa,cliente_bas.telex,cliente_bas.tipo_negocio,
|
|
cliente_bas.us_crea,cliente_bas.us_mod,cliente_bas.zona_postal
|
|
BEFORE ROW
|
|
LET curr = arr_curr()
|
|
SELECT a.* INTO cliente_bas.* FROM vetb00004 a
|
|
WHERE a.tipo_cliente = lista_clientes[curr].tipo_cliente2 AND
|
|
a.sec_cliente = lista_clientes[curr].sec_cliente2
|
|
SET CONNECTION "MSSQL"
|
|
LET cliente_bas.tipo_cliente = lista_clientes[curr].tipo_cliente2
|
|
LET cliente_bas.sec_cliente = lista_clientes[curr].sec_cliente2
|
|
CALL arrcontactos.clear()
|
|
CALL busca_info(DIALOG, arr_curr())
|
|
DISPLAY BY NAME cliente_bas.tipo_cliente,cliente_bas.sec_cliente,
|
|
cliente_bas.cod_provincia,cliente_bas.cod_zona,cliente_bas.cond_pago,
|
|
cliente_bas.fax,cliente_bas.fech_crea,cliente_bas.fech_mod,cliente_bas.limite_credito,
|
|
cliente_bas.nombre,cliente_bas.num_rnc,cliente_bas.status_t,cliente_bas.telefono,
|
|
cliente_bas.telefono_casa,cliente_bas.telex,cliente_bas.tipo_negocio,
|
|
cliente_bas.us_crea,cliente_bas.us_mod,cliente_bas.zona_postal
|
|
|
|
AFTER ROW
|
|
LET curr = arr_curr()
|
|
SELECT a.* INTO cliente_bas.* FROM vetb00004 a
|
|
WHERE a.tipo_cliente = lista_clientes[curr].tipo_cliente2 AND
|
|
a.sec_cliente = lista_clientes[curr].sec_cliente2
|
|
SET CONNECTION "MSSQL"
|
|
CALL busca_info(DIALOG,arr_curr())
|
|
DISPLAY BY NAME cliente_bas.tipo_cliente,cliente_bas.sec_cliente,
|
|
cliente_bas.cod_provincia,cliente_bas.cod_zona,cliente_bas.cond_pago,
|
|
cliente_bas.fax,cliente_bas.fech_crea,cliente_bas.fech_mod,cliente_bas.limite_credito,
|
|
cliente_bas.nombre,cliente_bas.num_rnc,cliente_bas.status_t,cliente_bas.telefono,
|
|
cliente_bas.telefono_casa,cliente_bas.telex,cliente_bas.tipo_negocio,
|
|
cliente_bas.us_crea,cliente_bas.us_mod,cliente_bas.zona_postal
|
|
|
|
ON ACTION actualiza
|
|
CALL actualiza()
|
|
END DISPLAY
|
|
DISPLAY ARRAY pinfo TO sinformacion.*
|
|
END DISPLAY
|
|
CALL lista_clientes.clear()
|
|
ON ACTION eliminar
|
|
|
|
|
|
SELECT SUM(a.valor+a.monto_desc) INTO valor
|
|
FROM cctb00001 a
|
|
WHERE a.tipo_cliente = cliente_bas.tipo_cliente AND
|
|
a.sec_cliente = cliente_bas.sec_cliente AND a.status_t is NULL AND
|
|
a.tipo_doc NOT in ("DE","PC")
|
|
|
|
IF valor IS NULL THEN
|
|
LET valor = 0.00
|
|
END IF
|
|
|
|
SELECT SUM(a.valor+a.monto_desc) INTO valor1
|
|
FROM cctb00001 a
|
|
WHERE a.tipo_cliente = cliente_bas.tipo_cliente and
|
|
a.sec_cliente = cliente_bas.sec_cliente and
|
|
a.status_t is NULL AND a.tipo_doc = "DE" AND a.num_doc = a.aplica_a
|
|
|
|
IF valor1 IS NULL THEN
|
|
LET valor1 = 0.00
|
|
END IF
|
|
LET balance = valor - valor1
|
|
|
|
IF balance != 0 THEN
|
|
LET numero_msg = 184
|
|
CALL msg(numero_msg)
|
|
SLEEP 2
|
|
RETURN
|
|
ELSE
|
|
UPDATE vetb00004 SET (status_t,us_mod,fech_mod) =
|
|
("E",SUSER_SNAME(),GETDATE())
|
|
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
|
|
sec_cliente = cliente_bas.sec_cliente
|
|
|
|
UPDATE vetb00005 SET (status_t,us_mod,fech_mod) =
|
|
("E",SUSER_SNAME(),GETDATE())
|
|
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
|
|
sec_cliente = cliente_bas.sec_cliente
|
|
|
|
UPDATE vetb00006 SET (status_t,us_mod,fech_mod) =
|
|
("E",SUSER_SNAME(),GETDATE())
|
|
WHERE tipo_cliente_s = cliente_bas.tipo_cliente AND
|
|
sec_cliente_s = cliente_bas.sec_cliente
|
|
|
|
UPDATE vetb00028 SET (status_t,us_mod,fech_mod) =
|
|
("E",SUSER_SNAME(),GETDATE())
|
|
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
|
|
sec_cliente = cliente_bas.sec_cliente
|
|
|
|
|
|
IF kitbis = 'S' THEN
|
|
SET CONNECTION "IFMX"
|
|
UPDATE vetb00004 SET (status_t,us_mod,fech_mod) =
|
|
("E",user,current)
|
|
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
|
|
sec_cliente = cliente_bas.sec_cliente
|
|
|
|
UPDATE vetb00005 SET (status_t,us_mod,fech_mod) =
|
|
("E",user,current)
|
|
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
|
|
sec_cliente = cliente_bas.sec_cliente
|
|
|
|
UPDATE vetb00028 SET (status_t,us_mod,fech_mod) =
|
|
("E",user,CURRENT)
|
|
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
|
|
sec_cliente = cliente_bas.sec_cliente
|
|
|
|
END IF
|
|
|
|
END IF
|
|
|
|
LET numero_msg = 39
|
|
CALL msg(numero_msg)
|
|
|
|
ON ACTION cancel
|
|
LET int_flag = FALSE
|
|
INITIALIZE cliente_Bas.* TO NULL
|
|
INITIALIZE cliente_dir.* TO NULL
|
|
CALL lista_clientes.clear()
|
|
CLEAR FORM
|
|
EXIT DIALOG
|
|
RETURN
|
|
END CONSTRUCT
|
|
END DIALOG
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION vend_cli()
|
|
|
|
#WHENEVER ERROR CONTINUE
|
|
|
|
OPEN WINDOW relacion AT 8,5 WITH FORM "vefmwd101" ATTRIBUTE (BORDER,
|
|
COMMENT LINE LAST,FORM LINE FIRST + 1)
|
|
|
|
CONSTRUCT criterio ON b.num_emp FROM num_emp
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
GOTO salir1
|
|
END IF
|
|
|
|
LET selec = "SELECT UNIQUE b.num_emp,b.nom1_emp,b.apell1_emp ",
|
|
"FROM adtb00003 b,vetb00028 a ",
|
|
"WHERE b.num_emp = a.sec_vend AND a.status_t IS NULL AND ",
|
|
criterio CLIPPED," ORDER BY 1 "
|
|
|
|
PREPARE comando1 FROM selec
|
|
DECLARE vendedor CURSOR FOR comando1
|
|
|
|
LET idx = 1
|
|
FOREACH vendedor INTO cli_vend1[idx].*
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
CALL set_count(idx-1)
|
|
|
|
DISPLAY ARRAY cli_vend1 TO s_empleados.*
|
|
LET curr = ARR_CURR()
|
|
LET num_emp = cli_vend1[curr].num_emp
|
|
LET nombre_v= cli_vend1[curr].nom1_emp CLIPPED," ",
|
|
cli_vend1[curr].apell1_emp CLIPPED
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
GOTO salir1
|
|
END IF
|
|
|
|
LABEL salir1:
|
|
CLOSE WINDOW relacion
|
|
END FUNCTION
|
|
FUNCTION busca_info(d,i1)
|
|
DEFINE d ui.Dialog,
|
|
i1 INT
|
|
LET transportista.cod_zona = cliente_bas.cod_zona
|
|
LET nombre = cliente_bas.nombre
|
|
CALL busca_nombre_zona()
|
|
DISPLAY descrip1 TO descripcion_zona
|
|
LET transportista.cod_zona = cliente_bas.cod_zona
|
|
LET transportista.cod_provincia = cliente_bas.cod_provincia
|
|
CALL busca_provincia()
|
|
DISPLAY descrip1 TO descripcion_provincia
|
|
|
|
SELECT UNIQUE a.num_emp,a.nom1_emp,a.apell1_emp INTO num_emp,n1,n2
|
|
FROM adtb00003 a, vetb00028 b
|
|
WHERE a.num_emp = b.sec_vend AND b.tipo_cliente = cliente_bas.tipo_cliente
|
|
AND b.sec_cliente = cliente_bas.sec_cliente
|
|
LET nombre_v = n1 CLIPPED," ",n2 CLIPPED
|
|
|
|
# BUSCA SI EL CLIENTE PAGA ITBIS
|
|
LET kitbis = 'N'
|
|
SELECT a.paga_itbis INTO kitbis FROM vetb00060 a
|
|
WHERE a.tipo_cliente = cliente_bas.tipo_cliente
|
|
CALL ciudad_pais(cliente_bas.cod_provincia)
|
|
CALL ctipoNegocio()
|
|
LET pcondicion = ui.combobox.forname("formonly.cond_pago")
|
|
CALL ccondicion()
|
|
CALL busca_direcciones(cliente_bas.tipo_cliente,cliente_Bas.sec_cliente) RETURNING cliente_dir.*
|
|
CALL arrcontactos.clear()
|
|
FOR idx = 1 TO 5
|
|
DISPLAY arrcontactos[idx].pcontacto TO scontactos[idx].pcontacto
|
|
DISPLAY arrcontactos[idx].ppuesto TO scontactos[idx].ppuesto
|
|
DISPLAY arrcontactos[idx].email_contacto TO scontactos[idx].email_contacto
|
|
DISPLAY arrcontactos[idx].ptelefono_casa TO scontactos[idx].ptelefono_casa
|
|
DISPLAY arrcontactos[idx].telefono_of TO scontactos[idx].telefono_of
|
|
END FOR
|
|
DECLARE busca_contactos CURSOR FOR
|
|
SELECT a.contacto,a.puesto,a.email,a.celular,a.telefono_of,a.telefono_casa,
|
|
a.id
|
|
FROM vetb00087 a
|
|
WHERE a.tipo_cliente = cliente_bas.tipo_cliente AND
|
|
a.sec_cliente = cliente_bas.sec_cliente
|
|
ORDER BY a.id
|
|
LET idx = 1
|
|
FOREACH busca_contactos INTO arrContactos[idx].*
|
|
IF idx < 5 THEN
|
|
DISPLAY arrcontactos[idx].pcontacto TO scontactos[idx].pcontacto
|
|
DISPLAY arrcontactos[idx].ppuesto TO scontactos[idx].ppuesto
|
|
DISPLAY arrcontactos[idx].email_contacto TO scontactos[idx].email_contacto
|
|
DISPLAY arrcontactos[idx].ptelefono_casa TO scontactos[idx].ptelefono_casa
|
|
DISPLAY arrcontactos[idx].telefono_of TO scontactos[idx].telefono_of
|
|
END IF
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
DISPLAY BY NAME cliente_bas.tipo_cliente,cliente_bas.sec_cliente,
|
|
cliente_bas.cod_provincia,cliente_bas.cod_zona,cliente_bas.cond_pago,
|
|
cliente_bas.fax,cliente_bas.fech_crea,cliente_bas.fech_mod,cliente_bas.limite_credito,
|
|
cliente_bas.nombre,cliente_bas.num_rnc,cliente_bas.status_t,cliente_bas.telefono,
|
|
cliente_bas.telefono_casa,cliente_bas.telex,cliente_bas.tipo_negocio,
|
|
cliente_bas.us_crea,cliente_bas.us_mod,cliente_bas.zona_postal,
|
|
num_emp,nombre_v,cliente_dir.barrio,cliente_dir.calle,cliente_dir.casa_num,
|
|
cliente_dir.urbanizacion,cliente_bas.id_ciudad
|
|
# BUSCA INFORMACION
|
|
CALL pinfo.clear()
|
|
DECLARE busca_informacion CURSOR FOR
|
|
SELECT a.num_oc,CONVERT(CHAR(10),a.fecha_oc,103),a.cotizacion_no,b.sub_total,a.cerrada
|
|
FROM prtb00012 a, vetb00050 b
|
|
WHERE b.cotizacion_no = a.cotizacion_no AND
|
|
a.tipo_cliente = cliente_bas.tipo_cliente AND
|
|
a.sec_cliente = cliente_bas.sec_cliente AND a.status_t IS NULL
|
|
|
|
LET idx = 1
|
|
|
|
FOREACH busca_informacion INTO pinfo[idx].*
|
|
CALL pinfo.appendElement()
|
|
IF pinfo[idx].status_ord = 'S' THEN
|
|
LET pinfo[idx].status_ord = 'CERRADA'
|
|
END IF
|
|
IF pinfo[idx].status_ord = ' N' THEN
|
|
LET pinfo[idx].status_ord = 'ABIERTA'
|
|
END IF
|
|
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
|
|
END FUNCTION
|
|
FUNCTION actualiza()
|
|
|
|
SET CONNECTION "MSSQL"
|
|
LET INT_FLAG = FALSE
|
|
IF cliente_bas.status_t= "E" THEN
|
|
LET numero_msg= 36
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
# CONTROL VENDEDOR
|
|
|
|
|
|
SELECT a.sec_vend FROM vetb00028 a,seg0007 b
|
|
WHERE b.usuario = suser_sname() AND
|
|
b.sec_vend = a.sec_vend AND
|
|
a.tipo_cliente = cliente_bas.tipo_cliente AND
|
|
a.sec_cliente = cliente_bas.sec_cliente AND
|
|
a.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL fgl_winmessage("ERROR","USTED NO LE VENDE A ESTE CLIENTE, DEBE CONSULTAR EL EJECUTIVO ASIGNADO","STOP")
|
|
RETURN
|
|
END IF
|
|
DIALOG ATTRIBUTES(UNBUFFERED,FIELD ORDER FORM)
|
|
INPUT BY NAME cliente_bas.zona_postal,cliente_bas.num_rnc,
|
|
cliente_bas.nombre,cliente_bas.limite_credito,cliente_bas.cond_pago,
|
|
cliente_bas.tipo_negocio,
|
|
cliente_dir.calle,cliente_dir.casa_num,
|
|
cliente_dir.urbanizacion,cliente_dir.barrio,
|
|
cliente_bas.cod_zona,
|
|
cliente_bas.cod_provincia,
|
|
cliente_bas.id_ciudad,cliente_Bas.telefono,
|
|
cliente_bas.fax,cliente_bas.telex,cliente_bas.patente,
|
|
cliente_bas.telefono_casa,
|
|
cliente_bas.us_crea,cliente_bas.fech_crea,
|
|
cliente_bas.us_mod,cliente_bas.fech_mod,num_emp
|
|
ATTRIBUTES(WITHOUT DEFAULTS)
|
|
|
|
BEFORE FIELD limite_credito
|
|
SELECT a.nom_puesto INTO role_puesto
|
|
FROM seg0003 a
|
|
WHERE a.usuario = usuarios
|
|
|
|
IF role_puesto <> 'ADMINISTRATOR' AND
|
|
role_puesto <> 'CXC' THEN
|
|
NEXT FIELD tipo_negocio
|
|
END IF
|
|
BEFORE INPUT
|
|
CALL ctipoNegocio()
|
|
LET pcondicion = ui.combobox.forname("formonly.cond_pago")
|
|
CALL ccondicion()
|
|
|
|
|
|
ON KEY (CONTROL-W)
|
|
CASE
|
|
WHEN INFIELD (cod_zona)
|
|
CALL consulta_zonas()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_zona
|
|
END IF
|
|
|
|
IF NOT int_flag THEN
|
|
LET cliente_bas.cod_zona = zona.cod_zona
|
|
NEXT FIELD cod_provincia
|
|
END IF
|
|
LET int_flag = FALSE
|
|
|
|
WHEN INFIELD (cod_provincia)
|
|
LET transportista.cod_zona = cliente_bas.cod_zona
|
|
CALL consulta_provincias()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_provincia
|
|
END IF
|
|
|
|
IF NOT int_flag THEN
|
|
LET cliente_bas.cod_provincia = zonap.cod_provincia
|
|
NEXT FIELD telefono
|
|
END IF
|
|
|
|
WHEN INFIELD (num_emp)
|
|
CALL vend_cli()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_emp
|
|
END IF
|
|
IF NOT int_flag THEN
|
|
LET num_emp = cli_vend1[curr].num_emp
|
|
DISPLAY num_emp,nombre_v
|
|
END IF
|
|
LET int_flag = FALSE
|
|
END CASE
|
|
AFTER FIELD num_rnc
|
|
IF cliente_bas.tipo_cliente < 17 THEN
|
|
IF cliente_bas.num_rnc IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_rnc
|
|
END IF
|
|
IF cliente_bas.zona_postal = '1' THEN
|
|
IF LENGTH(cliente_bas.num_rnc) <> 9 THEN
|
|
LET numero_msg = 77
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_rnc
|
|
END IF
|
|
ELSE
|
|
IF LENGTH(cliente_bas.num_rnc) <> 11 THEN
|
|
LET numero_msg = 77
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_rnc
|
|
END IF
|
|
END IF
|
|
|
|
|
|
LET VECES = 0
|
|
SELECT COUNT(*) INTO veces FROM vetb00004 a
|
|
WHERE a.num_rnc = cliente_bas.num_rnc AND
|
|
a.tipo_cliente = cliente_bas.tipo_cliente and
|
|
a.status_t is null
|
|
|
|
|
|
IF veces > 2 THEN
|
|
LET numero_msg = 12
|
|
CALL msg(numero_msg)
|
|
NEXT field num_rnc
|
|
END IF
|
|
#BUSCA EL RNC EN LA TABLA DE LA DGII
|
|
IF kitbis = 'S' AND cliente_bas.zona_postal ='1'THEN
|
|
LET selec =
|
|
"SELECT a.razon_social,RTRIM(a.calle),' NO.'+RTRIM(a.no_local),a.sector ",
|
|
"FROM DGII.dbo.empresas a ",
|
|
"WHERE a.rnc = ? "
|
|
|
|
PREPARE query1 FROM selec
|
|
EXECUTE query1 USING cliente_bas. num_rnc INTO cliente_bas.nombre,cliente_dir.calle,
|
|
cliente_dir.casa_num,cliente_dir.urbanizacion
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL msg(3)
|
|
#NEXT FIELD num_rnc
|
|
END IF
|
|
DISPLAY BY NAME cliente_bas.nombre
|
|
END IF
|
|
|
|
END IF
|
|
|
|
|
|
AFTER FIELD cod_zona
|
|
IF cliente_bas.cod_zona is NULL then
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_zona
|
|
END IF
|
|
|
|
SELECT descrip INTO descrip1 FROM vetb00008
|
|
WHERE cod_zona = cliente_bas.cod_zona AND status_t IS NULL
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 43
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_zona
|
|
END IF
|
|
DISPLAY descrip1 TO descripcion_zona
|
|
NEXT FIELD cod_provincia
|
|
|
|
|
|
AFTER FIELD cod_provincia
|
|
IF cliente_bas.cod_provincia is NULL then
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_provincia
|
|
END IF
|
|
|
|
SELECT b.nombre_provincia, b.status_t
|
|
INTO descrip1, status_reg FROM vetb00009 a, vetb00020 b
|
|
WHERE a.cod_zona = cliente_bas.cod_zona AND
|
|
a.cod_provincia = cliente_bas.cod_provincia AND
|
|
b.cod_provincia = a.cod_provincia
|
|
|
|
IF status >= 0 THEN
|
|
IF status != NOTFOUND THEN
|
|
IF status_reg = "E" THEN
|
|
LET numero_msg = 66
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_provincia
|
|
END IF
|
|
DISPLAY descrip1 TO descripcion_provincia
|
|
ELSE
|
|
LET numero_msg = 65
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_zona
|
|
END IF
|
|
END IF
|
|
CALL ciudad_pais(cliente_bas.cod_provincia)
|
|
# CALL veprmt102(cliente_bas.tipo_cliente,cliente_bas.sec_cliente)
|
|
# CALL veprmt106(cliente_bas.tipo_cliente,cliente_bas.sec_cliente)
|
|
AFTER FIELD num_emp
|
|
IF num_emp IS NULL OR num_emp = 0 THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_emp
|
|
END IF
|
|
|
|
SELECT UNIQUE a.nom1_emp,a.apell1_emp INTO n1,n2
|
|
FROM adtb00003 a
|
|
WHERE (a.status_t IS NULL OR a.status_t = "I") AND
|
|
(a.num_emp = num_emp)
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_emp
|
|
END IF
|
|
|
|
LET nombre_v = n1 CLIPPED," ",n2 CLIPPED
|
|
DISPLAY BY NAME nombre_v
|
|
AFTER INPUT
|
|
IF cliente_bas.cod_provincia IS NULL OR cliente_bas.cod_provincia = 0 THEN
|
|
CALL msg(16)
|
|
NEXT FIELD cod_provincia
|
|
END IF
|
|
|
|
# BUSCA SI EL CLIENTE PAGA ITBIS
|
|
LET kitbis = 'N'
|
|
SELECT a.paga_itbis INTO kitbis FROM vetb00060 a
|
|
WHERE a.tipo_cliente = cliente_bas.tipo_cliente
|
|
|
|
IF num_emp IS NULL OR num_emp = 0 THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_emp
|
|
END IF
|
|
|
|
SELECT UNIQUE a.nom1_emp,a.apell1_emp INTO n1,n2
|
|
FROM adtb00003 a
|
|
WHERE (a.status_t IS NULL OR a.status_t = "I") AND a.num_emp = num_emp
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_emp
|
|
END IF
|
|
|
|
LET nombre_v = n1 CLIPPED," ",n2 CLIPPED
|
|
DISPLAY BY NAME nombre_v
|
|
|
|
END INPUT
|
|
INPUT ARRAY arrContactos FROM scontactos.* ATTRIBUTES(WITHOUT DEFAULTS)
|
|
END INPUT
|
|
ON ACTION CANCEL
|
|
LET INT_FLAG = FALSE
|
|
CALL msg(2)
|
|
|
|
RETURN
|
|
ON ACTION guardar
|
|
WHENEVER ERROR CONTINUE
|
|
BEGIN WORK
|
|
UPDATE vetb00004 SET vetb00004.nombre = cliente_bas.nombre,
|
|
cod_zona = cliente_bas.cod_zona,
|
|
cod_provincia = cliente_bas.cod_provincia,
|
|
id_ciudad = cliente_bas.id_ciudad,
|
|
telefono = cliente_bas.telefono,
|
|
fax = cliente_bas.fax,
|
|
telex = cliente_bas.telex,
|
|
patente = cliente_bas.patente,
|
|
limite_credito = cliente_bas.limite_credito,
|
|
zona_postal = cliente_bas.zona_postal,
|
|
num_rnc = cliente_bas.num_rnc,
|
|
nombre_patente = cliente_bas.nombre_patente,
|
|
us_mod = SUSER_SNAME(),
|
|
fech_mod = GETDATE() ,
|
|
telefono_casa = cliente_Bas.telefono_casa,
|
|
puesto_laboral = cliente_bas.puesto_laboral,
|
|
tipo_negocio = cliente_bas.tipo_negocio,
|
|
cond_pago = cliente_Bas.cond_pago
|
|
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
|
|
sec_cliente = cliente_bas.sec_cliente
|
|
IF STATUS < 0 THEN
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage("ERROR","NO PUDE ACTUALIZAR CLIENTE","STOP")
|
|
END IF
|
|
|
|
UPDATE vetb00005 SET calle = cliente_dir.calle,
|
|
urbanizacion = cliente_dir.urbanizacion,
|
|
barrio = cliente_dir.barrio,
|
|
casa_num = cliente_dir.casa_num,
|
|
us_mod = usuarios,
|
|
fech_mod = getdate()
|
|
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
|
|
sec_cliente = cliente_bas.sec_cliente
|
|
IF STATUS < 0 THEN
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage("ERROR","NO PUDE ACTUALIZAR CLIENTE","STOP")
|
|
END IF
|
|
|
|
SELECT a.sec_cliente FROM vetb00028 a
|
|
WHERE a.tipo_cliente = cliente_bas.tipo_cliente and
|
|
a.sec_cliente = cliente_bas.sec_cliente
|
|
IF STATUS != NOTFOUND THEN
|
|
UPDATE vetb00028 SET (sec_vend,us_mod,fech_mod) =
|
|
(num_emp,SUSER_SNAME(),GETDATE())
|
|
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
|
|
sec_cliente = cliente_bas.sec_cliente
|
|
IF STATUS < 0 THEN
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage("ERROR","NO PUDE ACTUALIZAR CLIENTE","STOP")
|
|
END IF
|
|
ELSE
|
|
INSERT INTO vetb00028 (tipo_cliente,sec_cliente,sec_vend,us_crea,fech_crea)
|
|
VALUES (cliente_bas.tipo_cliente,cliente_bas.sec_cliente,num_emp,SUSER_SNAME(),GETDATE())
|
|
IF STATUS < 0 THEN
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage("ERROR","NO PUDE ACTUALIZAR CLIENTE","STOP")
|
|
END IF
|
|
END IF
|
|
# CONTACTOS
|
|
LET cuenta_contacto = arr_count()
|
|
DELETE FROM vetb00087 WHERE tipo_cliente = cliente_bas.tipo_cliente AND
|
|
sec_cliente = cliente_bas.sec_cliente
|
|
IF STATUS < 0 THEN
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage("ERROR","NO PUDE ACTUALIZAR CLIENTE","STOP")
|
|
END IF
|
|
|
|
FOR idx = 1 TO cuenta_contacto
|
|
INSERT INTO vetb00087 (tipo_cliente,sec_cliente,contacto,puesto,email,celular,
|
|
telefono_of,telefono_casa,id,us_crea,fech_crea)
|
|
VALUES
|
|
(cliente_bas.tipo_cliente,cliente_Bas.sec_cliente,
|
|
arrContactos[idx].pcontacto,arrContactos[idx].ppuesto,
|
|
arrContactos[idx].email_contacto,arrContactos[idx].celular,
|
|
arrContactos[idx].telefono_of,arrContactos[idx].ptelefono_casa,pid,
|
|
usuarios,getdate())
|
|
IF STATUS < 0 THEN
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage("ERROR","NO PUDE ACTUALIZAR CLIENTE","STOP")
|
|
END IF
|
|
|
|
END FOR
|
|
COMMIT WORK
|
|
|
|
IF kitbis = 'S' THEN
|
|
SET CONNECTION "IFMX"
|
|
|
|
|
|
UPDATE vetb00004 SET vetb00004.nombre = cliente_bas.nombre,
|
|
cod_zona = cliente_bas.cod_zona,
|
|
cod_provincia = cliente_bas.cod_provincia,
|
|
telefono = cliente_bas.telefono,
|
|
fax = cliente_bas.fax,
|
|
telex = cliente_bas.telex,
|
|
patente = cliente_bas.patente,
|
|
limite_credito = cliente_bas.limite_credito,
|
|
zona_postal = cliente_bas.zona_postal,
|
|
num_rnc = cliente_bas.num_rnc,
|
|
nombre_patente = cliente_bas.nombre_patente,
|
|
us_mod = user,
|
|
fech_mod = current
|
|
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
|
|
sec_cliente = cliente_bas.sec_cliente
|
|
|
|
SELECT a.sec_cliente FROM vetb00028 a
|
|
WHERE a.tipo_cliente = cliente_bas.tipo_cliente and
|
|
a.sec_cliente = cliente_bas.sec_cliente
|
|
IF STATUS != NOTFOUND THEN
|
|
UPDATE vetb00028 SET (sec_vend,us_mod,fech_mod) =
|
|
(num_emp,user,current)
|
|
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
|
|
sec_cliente = cliente_bas.sec_cliente
|
|
ELSE
|
|
INSERT INTO vetb00028 (tipo_cliente,sec_cliente,sec_vend,us_crea,fech_crea)
|
|
VALUES (cliente_bas.tipo_cliente,cliente_bas.sec_cliente,num_emp,user,current)
|
|
END IF
|
|
END IF
|
|
LET numero_msg = 13
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END DIALOG
|
|
END FUNCTION |