1953 lines
79 KiB
Plaintext
1953 lines
79 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.
|
|
------------------------------------------------------------------
|
|
}
|
|
IMPORT os
|
|
IMPORT util
|
|
GLOBALS "veprgb000.4gl"
|
|
DEFINE tmpfile STRING
|
|
DEFINE file_bytes BYTE
|
|
DEFINE tmpdir_file,tipos_foto,dir_file,dir_foto CHAR(60),
|
|
d_tipos,mensaje,f_tipos,l_file,filepath,extension,extension_foto,tmp_dirfoto,imagefac,tmp_destino STRING,ffoto,pimagen BYTE
|
|
, nombre_file_foto,foto VARCHAR(100)
|
|
DEFINE Toemail,subject,cuerpo_correo,xusername,xsmtphost,xsmtpport,xpassword,emailadd,retorne STRING,
|
|
telefono_vend VARCHAR(25),
|
|
email_vend VARCHAR(255),
|
|
codigo_err,p_res INT
|
|
|
|
DEFINE valor,valor1,balance DECIMAL(12,2),
|
|
pid,cuenta_contacto,num_emp SMALLINT,
|
|
n1,n2,pcrea CHAR(15),
|
|
chitbis CHAR(1),
|
|
nombre_v CHAR(31),
|
|
role_puesto VARCHAR(50),
|
|
arrContactos DYNAMIC ARRAY OF RECORD
|
|
tipo_negocio_contacto SMALLINT,
|
|
pcontacto VARCHAR(60),
|
|
ppuesto VARCHAR(60),
|
|
ppuesto1 VARCHAR(60),
|
|
email_contacto VARCHAR(100),
|
|
email_estado VARCHAR(3),
|
|
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,
|
|
arr_vend_aux DYNAMIC ARRAY OF RECORD
|
|
idrow INT,
|
|
sec_vend_aux INT,
|
|
nombre_vend_aux VARCHAR(100)
|
|
END RECORD,
|
|
filedestino VARCHAR(200)
|
|
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
CONNECT TO "marmotech" AS "IFMX" USER usuarios USING clave
|
|
CONNECT TO "smarmotech" AS "MSSQL" USER usuarios USING clave
|
|
|
|
# BUSCA INFORMACION GENERAL PARA EL EMAIL
|
|
SELECT from_address,puerto,nombre_servidor,clave
|
|
INTO xusername,xsmtpport,xsmtphost,xpassword
|
|
FROM tbperfil_mail WHERE cod_perfil = 2
|
|
|
|
|
|
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 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)
|
|
|
|
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_bas.generica,cliente_bas.codigodgii,
|
|
cliente_dir.calle,cliente_dir.casa_num,
|
|
cliente_dir.urbanizacion,cliente_dir.barrio,
|
|
cliente_bas.codigo,
|
|
cliente_bas.cod_zona,
|
|
cliente_bas.cod_provincia,
|
|
cliente_bas.id_ciudad,
|
|
cliente_bas.telefono_casa,
|
|
cliente_bas.telefono,
|
|
cliente_bas.fax,cliente_bas.telex,
|
|
cliente_bas.nombre_patente,
|
|
cliente_bas.patente,
|
|
cliente_bas.puesto_laboral,
|
|
cliente_bas.url,
|
|
cliente_bas.us_crea,cliente_bas.fech_crea,
|
|
cliente_bas.us_mod,cliente_bas.fech_mod,num_emp
|
|
BEFORE FIELD nombre
|
|
IF cliente_bas.zona_postal = '1' THEN
|
|
IF cliente_bas.cond_pago IS NULL THEN
|
|
NEXT FIELD cond_pago
|
|
END IF
|
|
END IF
|
|
AFTER FIELD patente
|
|
IF cliente_bas.patente IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD patente
|
|
END IF
|
|
# VERIFICA EMAIL
|
|
CALL inicializar()
|
|
LET url_verification =url_verification CLIPPED,cliente_bas.patente CLIPPED
|
|
|
|
CALL apiclient(url_verification) RETURNING estado,codigo_err
|
|
DISPLAY "ESTADO 1 ",estado
|
|
IF codigo_Err =400 THEN
|
|
CALL msg(1016)
|
|
|
|
NEXT FIELD patente
|
|
|
|
END IF
|
|
|
|
|
|
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
|
|
LET cliente_bas.codigo='DO'
|
|
CALL ctipoNegocio("formonly.tipo_negocio")
|
|
LET pcondicion = ui.combobox.forname("formonly.cond_pago")
|
|
CALL ccondicion()
|
|
CALL paises()
|
|
CALL arrContactos.clear()
|
|
|
|
SELECT a.sec_vend,a.celular,a.email INTO num_emp,telefono_vend,email_vend
|
|
FROM seg0000 a
|
|
WHERE a.usuario = usuarios
|
|
|
|
DISPLAY BY NAME num_emp
|
|
# CALL tipo_comprobante()
|
|
ON ACTION buscaZona
|
|
|
|
CALL consulta_zonas(cliente_bas.codigo)
|
|
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
|
|
|
|
ON ACTION buscaProvincia
|
|
LET transportista.cod_zona = cliente_bas.cod_zona
|
|
CALL consulta_provincias(cliente_bas.cod_zona)
|
|
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
|
|
|
|
ON ACTION buscaEmpleado
|
|
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
|
|
BEFORE FIELD generica
|
|
SELECT DISTINCT a.generica FROM vetb00004 a WHERE a.generica = "SI"
|
|
IF STATUS <> NOTFOUND THEN
|
|
NEXT FIELD codigodgii
|
|
END IF
|
|
AFTER FIELD zona_postal
|
|
|
|
SELECT DISTINCT a.tipo_cliente FROM vetb00060 a
|
|
WHERE a.tipo_cliente = cliente_bas.tipo_cliente AND a.paga_itbis = 'S'
|
|
|
|
IF STATUS <> NOTFOUND THEN
|
|
|
|
IF cliente_bas.zona_postal IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD zona_postal
|
|
END IF
|
|
END IF
|
|
## 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.codigodgii IS NOT NULL AND cliente_bas.generica='NO' THEN
|
|
SELECT a.paga_itbis INTO chitbis FROM vetb00060 a
|
|
WHERE a.tipo_cliente = cliente_bas.tipo_cliente
|
|
|
|
IF chitbis = 'S' OR kitbis = 'S' 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 cliente_bas.zona_postal = '2' THEN
|
|
IF LENGTH(cliente_bas.num_rnc) <> 11 THEN
|
|
LET numero_msg = 77
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_rnc
|
|
END IF
|
|
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,a.estado1 ",
|
|
"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,estado_rnc
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL msg(3)
|
|
NEXT FIELD num_rnc
|
|
END IF
|
|
DISPLAY BY NAME cliente_bas.nombre
|
|
NEXT FIELD cond_pago
|
|
END IF
|
|
IF estado_rnc = 'ANULADO' OR estado_rnc = 'CESE TEMPORAL' OR estado_rnc = 'DADO DE BAJA' OR
|
|
estado_rnc = 'RECHAZADO' OR estado_rnc= 'RECHAZADO' OR estado_rnc = 'SUSPENDIDO' THEN
|
|
CALL msg(1022)
|
|
NEXT FIELD sec_cliente
|
|
END IF
|
|
|
|
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.ncf,a.control_creacion_usuario,a.codigo_dgii
|
|
INTO kitbis,pcrea,cliente_bas.codigodgii FROM vetb00060 a
|
|
WHERE a.tipo_cliente = cliente_bas.tipo_cliente
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL fgl_winmessage("ERROR","TIPO CLIENTE NO EXISTE","INFO")
|
|
NEXT FIELD tipo_cliente
|
|
END IF
|
|
IF pcrea = 'SI' THEN
|
|
SELECT a.usuario FROM seg0001 a,seg0005 b
|
|
WHERE a.usuario =usuarios AND
|
|
a.cod_perfil = b.cod_perfil AND
|
|
b.programa = 'veprmt101.crear'
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL fgl_winmessage("ERROR","USTED NO PUEDE CREAR ESTE TIPO DE CLIENTES","INFO")
|
|
NEXT FIELD tipo_cliente
|
|
END IF
|
|
|
|
|
|
END IF
|
|
|
|
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)
|
|
|
|
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
|
|
|
|
# CONTROL RELACION ZONAS - PROVINCIAS
|
|
SELECT a.cod_provincia FROM vetb00020 a WHERE a.codigo = cliente_bas.codigo AND
|
|
a.cod_provincia = cliente_bas.cod_provincia
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL msg(66)
|
|
NEXT FIELD codigo
|
|
END IF
|
|
END INPUT
|
|
# vendedores auxiliares
|
|
# vendedores auxiliares
|
|
|
|
INPUT ARRAY arr_vend_aux FROM s_aux.*
|
|
BEFORE ROW
|
|
LET curr = arr_curr()
|
|
|
|
AFTER FIELD sec_vend_aux
|
|
IF arr_vend_aux[curr].sec_vend_aux IS NOT NULL THEN
|
|
SELECT RTRIM(a.nom1_emp)||' '||a.apell1_emp INTO arr_vend_aux[curr].nombre_vend_aux
|
|
FROM adtb00003 a
|
|
WHERE a.num_emp = arr_vend_aux[curr].sec_vend_aux AND a.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL msg(3)
|
|
NEXT FIELD sec_vend_aux
|
|
END IF
|
|
IF arr_vend_aux[curr].sec_vend_aux = num_emp THEN
|
|
CALL fgl_winmessage("ERROR","NO PUEDE ASIGNAR EJECUTIVO DE ESTE CLIENTE COMO VENDEDOR ADICIONAL","INFO")
|
|
NEXT FIELD sec_vend_aux
|
|
END IF
|
|
END IF
|
|
|
|
ON ACTION busca_auxiliar
|
|
CALL busca_empleado1() RETURNING p_adtb03.num_emp,p_adtb03.nom1_emp,
|
|
p_adtb03.nom2_emp,
|
|
p_adtb03.apell1_emp,
|
|
p_adtb03.apell2_emp
|
|
LET arr_vend_aux[curr].sec_vend_aux = p_adtb03.num_emp
|
|
LET arr_vend_aux[curr].nombre_vend_aux= p_adtb03.nom1_emp clipped,' ',
|
|
p_adtb03.nom2_emp clipped,' ',
|
|
p_adtb03.apell1_emp clipped,' ',
|
|
p_adtb03.apell2_emp clipped
|
|
|
|
END INPUT
|
|
|
|
# contactos
|
|
|
|
INPUT ARRAY arrContactos FROM scontactos.*
|
|
BEFORE INPUT
|
|
CALL ctipoNegocio("formonly.tipo_negocio_contacto")
|
|
AFTER FIELD email_contacto
|
|
IF arrcontactos[arr_curr()].email_contacto IS NOT NULL THEN
|
|
# VERIFICA EMAIL
|
|
CALL inicializar()
|
|
LET url_verification =arrcontactos[arr_curr()].email_contacto CLIPPED
|
|
|
|
CALL apiclient(url_verification) RETURNING estado,codigo_err
|
|
IF codigo_Err =400 THEN
|
|
CALL msg(1016)
|
|
|
|
NEXT FIELD email_contacto
|
|
|
|
END IF
|
|
|
|
END IF
|
|
END INPUT
|
|
|
|
ON ACTION CANCEL
|
|
|
|
CALL MSG(2)
|
|
LET INT_FLAG = FALSE
|
|
RETURN
|
|
|
|
ON ACTION actualiza ATTRIBUTE(TEXT="Actualiza",IMAGE="refresh")
|
|
IF cliente_dir.calle IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD calle
|
|
END IF
|
|
IF cliente_bas.nombre IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD nombre
|
|
END IF
|
|
|
|
IF cliente_bas.patente = 'jsoto@marmotech.com.do' THEN
|
|
|
|
CALL fgl_winmessage("ERROR","EMAIL INVALIDO","INFO")
|
|
NEXT FIELD pantente
|
|
END IF
|
|
# IF LENGTH(cliente_bas.patente) <11 THEN
|
|
# CALL fgl_Winmessage("INFO","EMAIL DEBE DE CONTENER MAS CARACTERES","INFO")
|
|
# NEXT FIELD patente
|
|
# END IF
|
|
IF cliente_bas.patente NOT MATCHES "*@*" THEN
|
|
CALL fgl_Winmessage("INFO","EMAIL NO ES VALIDO","INFO")
|
|
NEXT FIELD patente
|
|
END IF
|
|
# IF cliente_bas.patente = 'jsoto@marmotech.com.do' THEN
|
|
# CALL fgl_Winmessage("INFO","EMAIL ERRONEO","INFO")
|
|
# NEXT FIELD patente
|
|
# END IF
|
|
IF LENGTH(cliente_dir.calle) < 5 THEN
|
|
CALL fgl_winmessage("INFO","DEBES COLOCAR UNA DIRECCION CON MAS INFORMACION","INFO")
|
|
NEXT FIELD calle
|
|
END IF
|
|
IF cliente_bas.patente IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD patente
|
|
END IF
|
|
# VENDEDOR
|
|
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
|
|
# VERIFICA EMAIL
|
|
CALL inicializar()
|
|
LET url_verification =cliente_bas.patente CLIPPED
|
|
CALL apiclient(url_verification) RETURNING estado,codigo_err
|
|
IF codigo_Err =400 THEN
|
|
CALL msg(1016)
|
|
|
|
NEXT FIELD patente
|
|
|
|
END IF
|
|
|
|
# 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
|
|
## WHENEVER ERROR CONTINUE
|
|
BEGIN WORK
|
|
|
|
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, usuarios, GETDATE(),
|
|
null, null)
|
|
IF STATUS < 0 THEN
|
|
ROLLBACK WORK
|
|
EXIT PROGRAM
|
|
END IF
|
|
|
|
INSERT INTO vetb00028
|
|
VALUES (NULL,num_emp,cliente_bas.tipo_cliente,cliente_bas.sec_cliente,
|
|
NULL,usuarios,GETDATE(),NULL,NULL)
|
|
IF STATUS < 0 THEN
|
|
ROLLBACK WORK
|
|
EXIT PROGRAM
|
|
END IF
|
|
|
|
FOR idx = 1 TO arrcontactos.getLength()
|
|
IF arrcontactos[idx].pcontacto IS NOT NULL THEN
|
|
IF arrcontactos[idx].email_contacto IS NOT NULL THEN
|
|
# VERIFICA EMAIL
|
|
CALL inicializar()
|
|
LET url_verification =arrcontactos[idx].email_contacto CLIPPED
|
|
|
|
CALL apiclient(url_verification) RETURNING estado,codigo_err
|
|
IF codigo_Err =400 THEN
|
|
ROLLBACK WORK
|
|
CALL msg(1016)
|
|
|
|
NEXT FIELD email_contacto
|
|
|
|
END IF
|
|
|
|
END IF
|
|
|
|
INSERT INTO vetb00087 (tipo_cliente,sec_cliente,contacto,puesto,email,celular,
|
|
telefono_of,telefono_casa,us_crea,fech_crea,puesto1,tipo_negocio_contacto,email_estado)
|
|
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,
|
|
usuarios,getdate(),arrcontactos[idx].ppuesto1,arrcontactos[idx].tipo_negocio_contacto,
|
|
arrContactos[idx].email_estado)
|
|
|
|
IF STATUS < 0 THEN
|
|
ROLLBACK WORK
|
|
EXIT PROGRAM
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
|
|
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,url,nombre_patente,
|
|
patente,generica,codigodgii,codigo)
|
|
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,usuarios,GETDATE(),cliente_bas.telefono_casa,
|
|
cliente_bas.tipo_negocio,cliente_bas.cond_pago,cliente_bas.id_ciudad,cliente_bas.url,
|
|
cliente_bas.nombre_patente,cliente_bas.patente,cliente_bas.generica,cliente_bas.codigodgii,cliente_bas.codigo)
|
|
|
|
IF STATUS < 0 THEN
|
|
ROLLBACK WORK
|
|
EXIT PROGRAM
|
|
END IF
|
|
|
|
# Venedor auxiliar
|
|
FOR idx = 1 TO arr_vend_aux.getLength()
|
|
IF arr_Vend_aux[idx].sec_vend_aux IS NOT NULL THEN
|
|
INSERT INTO vetb00059 (tipo_cliente,sec_cliente,sec_Vend_aux,us_crea,fech_crea)
|
|
VALUES (cliente_bas.tipo_cliente,cliente_Bas.sec_cliente,arr_vend_aux[idx].sec_vend_aux,usuarios,getdate())
|
|
END IF
|
|
END FOR
|
|
|
|
CALL contenido() RETURNING cuerpo_correo
|
|
LET Toemail = cliente_bas.patente CLIPPED
|
|
LET subject = 'MARMOTECH BIENBENIDA'
|
|
|
|
SELECT a.from_address,a.puerto,a.nombre_servidor,a.clave
|
|
INTO xusername,xsmtpport,xsmtphost,xpassword
|
|
FROM tbperfil_mail a WHERE a.cod_perfil = 2
|
|
|
|
COMMIT WORK
|
|
SET CONNECTION "MSSQL"
|
|
LET numero_msg = 1
|
|
CALL msg(numero_msg)
|
|
{ CALL enviaemail(Toemail,subject,cuerpo_correo,NULL,xusername,xsmtphost,xsmtpport,xpassword)
|
|
RETURNING retorne
|
|
|
|
INSERT INTO envia_email_log (email,display_name,estado,fecha,programa_envio,us_crea)
|
|
|
|
VALUES
|
|
(toemail
|
|
,cliente_bas.nombre
|
|
,retorne
|
|
,getdate()
|
|
,'MAESTRA CLIENTES'
|
|
,usuarios)
|
|
IF retorne = 'CORRECTO' THEN
|
|
COMMIT WORK
|
|
CALL arrcontactos.clear()
|
|
|
|
SET CONNECTION "MSSQL"
|
|
LET numero_msg = 1
|
|
CALL msg(numero_msg)
|
|
ELSE
|
|
ROLLBACK WORK
|
|
CALL msg(1016)
|
|
END IF
|
|
}
|
|
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,a.tipo_negocio
|
|
FROM num_rnc1,kvendedor,tipo_cliente2,sec_cliente2,nombre2,telefono2,
|
|
telefono3,tipoNegocio
|
|
BEFORE CONSTRUCT
|
|
|
|
|
|
CALL lista_clientes.clear()
|
|
CALL cvendedor()
|
|
CALL ctipoNegocio1()
|
|
|
|
# CALL tipo_comprobante()
|
|
AFTER CONSTRUCT
|
|
END CONSTRUCT
|
|
|
|
ON ACTION busca_cliente ATTRIBUTE(TEXT="Buscar Cliente",IMAGE="find")
|
|
SET CONNECTION "MSSQL"
|
|
CALL lista_clientes.clear()
|
|
LET SELEC = " SELECT a.num_rnc, a.tipo_negocio,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, CASE a.status_t WHEN 'E' THEN 'DESACTIVADO' ELSE 'ACTIVO' END,a.telefono,a.telefono_casa ",
|
|
"FROM vetb00004 a LEFT OUTER JOIN vetb00028 b ON a.tipo_cliente = b.tipo_cliente and a.sec_cliente = b.sec_cliente
|
|
LEFT OUTER JOIN adtb00003 c ON b.sec_vend = c.num_emp ",
|
|
" WHERE ",
|
|
|
|
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
|
|
|
|
|
|
DISPLAY ARRAY lista_clientes TO sclientes.*
|
|
ON ACTION desactivar ATTRIBUTE(TEXT="Desactivar",IMAGE="fa-close")
|
|
SELECT a.usuario FROM seg0001 a,seg0005 b
|
|
WHERE a.usuario =usuarios AND
|
|
a.cod_perfil = b.cod_perfil AND
|
|
b.programa = 'veprmt101.activar'
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL fgl_winmessage("ERROR","USTED NO TIENE PERMISOS PARA UTILIZAR OPCION","INFO")
|
|
CONTINUE DIALOG
|
|
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
|
|
|
|
|
|
UPDATE vetb00005 SET (status_t,us_mod,fech_mod) = ("E",usuarios,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",usuarios,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",usuarios,GETDATE())
|
|
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
|
|
sec_cliente = cliente_bas.sec_cliente
|
|
|
|
UPDATE vetb00004 SET (status_t,us_mod,fech_mod) = ("E",usuarios,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,getdate())
|
|
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 activar
|
|
|
|
SELECT a.usuario FROM seg0001 a,seg0005 b
|
|
WHERE a.usuario =usuarios AND
|
|
a.cod_perfil = b.cod_perfil AND
|
|
b.programa = 'veprmt101.activar'
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL fgl_winmessage("ERROR","USTED NO TIENE PERMISOS PARA UTILIZAR OPCION","INFO")
|
|
CONTINUE DIALOG
|
|
END IF
|
|
# BUSCA SI EL CLIENTE PAGA ITBIS
|
|
LET kitbis = 'N'
|
|
SELECT a.ncf INTO kitbis FROM vetb00060 a
|
|
WHERE a.tipo_cliente = cliente_bas.tipo_cliente
|
|
|
|
UPDATE vetb00005 SET (status_t,us_mod,fech_mod) = (NULL,usuarios,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,usuarios,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,usuarios,GETDATE())
|
|
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
|
|
sec_cliente = cliente_bas.sec_cliente
|
|
|
|
UPDATE vetb00004 SET (status_t,us_mod,fech_mod) = (NULL,usuarios,GETDATE())
|
|
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
|
|
sec_cliente = cliente_bas.sec_cliente
|
|
|
|
# ACTUALIZACION BASE DE DATOS EXTERIOR
|
|
IF kitbis = 'S' THEN
|
|
SET CONNECTION "IFMX"
|
|
|
|
|
|
UPDATE vetb00004 SET (status_t,us_mod,fech_mod) = (NULL,usuarios,getdate())
|
|
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
|
|
sec_cliente = cliente_bas.sec_cliente
|
|
END IF
|
|
|
|
SET CONNECTION "MSSQL"
|
|
LET numero_msg = 188
|
|
CALL msg(numero_msg)
|
|
|
|
BEFORE DISPLAY
|
|
LET lj= lista_clientes.getLength()
|
|
DISPLAY BY NAME lj
|
|
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())
|
|
# CALL tipo_comprobante()
|
|
CALL paises()
|
|
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,cliente_bas.patente,
|
|
cliente_bas.codigodgii,cliente_bas.codigo
|
|
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 paises()
|
|
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,cliente_bas.patente,
|
|
cliente_bas.url,cliente_bas.codigodgii,cliente_bas.codigo
|
|
|
|
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,
|
|
cliente_bas.url
|
|
AFTER DISPLAY
|
|
END DISPLAY
|
|
DISPLAY ARRAY pinfo TO sinformacion.*
|
|
END DISPLAY
|
|
|
|
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
|
|
ON ACTION eliminar ATTRIBUTE(TEXT='Borrar',IMAGE="garbage2")
|
|
|
|
|
|
SELECT a.sec_vend FROM vetb00028 a,seg0007 b
|
|
WHERE b.usuario = usuarios 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
|
|
|
|
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)
|
|
CONTINUE DIALOG
|
|
RETURN
|
|
ELSE
|
|
UPDATE vetb00004 SET (status_t,us_mod,fech_mod) =
|
|
("E",usuarios,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",usuarios,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",usuarios,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",usuarios,GETDATE())
|
|
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
|
|
sec_cliente = cliente_bas.sec_cliente
|
|
|
|
# ACTUALIZA LA BASE DE DATOS EXTERIOR
|
|
IF kitbis = 'S' THEN
|
|
SET CONNECTION "IFMX"
|
|
UPDATE vetb00004 SET (status_t,us_mod,fech_mod) =
|
|
("E",usuarios,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",usuarios,getdate())
|
|
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
|
|
sec_cliente = cliente_bas.sec_cliente
|
|
|
|
UPDATE vetb00028 SET (status_t,us_mod,fech_mod) =
|
|
("E",usuarios,getdate())
|
|
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 actualiza ATTRIBUTE(TEXT="Actualiza",IMAGE="refresh")
|
|
CALL actualiza()
|
|
|
|
|
|
CALL lista_clientes.clear()
|
|
|
|
|
|
|
|
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.nom1_emp,b.apell1_emp FROM nom1_emp,apell1_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,
|
|
corporativo VARCHAR(100),
|
|
plimite_cr_grupo DEC(12,2)
|
|
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.ncf INTO kitbis FROM vetb00060 a
|
|
WHERE a.tipo_cliente = cliente_bas.tipo_cliente
|
|
CALL ciudad_pais(cliente_bas.cod_provincia)
|
|
CALL ctipoNegocio("formonly.tipo_negocio")
|
|
LET pcondicion = ui.combobox.forname("formonly.cond_pago")
|
|
CALL ccondicion()
|
|
#CALL tipo_comprobante()
|
|
CALL busca_direcciones(cliente_bas.tipo_cliente,cliente_Bas.sec_cliente) RETURNING cliente_dir.*
|
|
CALL arrcontactos.clear()
|
|
CALL ctipoNegocio("formonly.tipo_negocio_contacto")
|
|
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.tipo_negocio_contacto,a.contacto,a.puesto,a.puesto1,a.email,a.email_estado,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
|
|
# INFORMACION CORPORATIVO
|
|
SELECT CAST(a.codigo_grupo AS VARCHAR(10))||'-'||a.descripcion,b.limite_cr_grupo
|
|
INTO corporativo,plimite_cr_grupo
|
|
FROM vetb00052 a,vetb00054 b
|
|
WHERE a.codigo_grupo = b.codigo_grupo AND a.tipo_cliente = cliente_bas.tipo_cliente
|
|
AND a.sec_cliente = cliente_bas.sec_cliente
|
|
|
|
CALL paises()
|
|
SELECT a.codigo INTO cliente_bas.codigo FROM vetb00004 a
|
|
WHERE a.tipo_cliente = cliente_bas.tipo_cliente AND a.sec_cliente = cliente_bas.sec_cliente
|
|
|
|
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,
|
|
cliente_bas.url,cliente_bas.codigodgii,corporativo,plimite_cr_grupo,
|
|
cliente_bas.codigo
|
|
|
|
CALL arr_vend_aux.clear()
|
|
#BUSCA VENDEDOR AUXILIAR
|
|
DECLARE busca_vendedor CURSOR FOR
|
|
SELECT a.idrow,a.sec_vend_aux,RTRIM(b.nom1_emp) ||' '|| b.apell1_emp FROM vetb00059 a,adtb00003 b
|
|
WHERE a.tipo_cliente = cliente_bas.tipo_cliente AND
|
|
a.sec_cliente = cliente_bas.sec_cliente AND a.sec_vend_aux = b.num_emp
|
|
|
|
LET idx = 1
|
|
FOREACH busca_vendedor INTO arr_vend_aux[idx].*
|
|
LET idx = idx+1
|
|
END FOREACH
|
|
# 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
|
|
|
|
DISPLAY "usuario ",usuarios
|
|
SELECT a.sec_vend FROM vetb00028 a,seg0007 b
|
|
WHERE b.usuario = usuarios 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_bas.generica,cliente_bas.codigodgii,
|
|
cliente_dir.calle,cliente_dir.casa_num,
|
|
cliente_dir.urbanizacion,cliente_dir.barrio,
|
|
cliente_bas.codigo,
|
|
cliente_bas.cod_zona,
|
|
cliente_bas.cod_provincia,
|
|
cliente_bas.id_ciudad,cliente_Bas.telefono,
|
|
cliente_bas.fax,cliente_bas.telex,cliente_bas.nombre_patente,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,
|
|
cliente_bas.url
|
|
ATTRIBUTES(WITHOUT DEFAULTS)
|
|
BEFORE FIELD nombre
|
|
IF cliente_bas.zona_postal = '1' THEN
|
|
NEXT FIELD cond_pago
|
|
END IF
|
|
AFTER FIELD patente
|
|
IF cliente_bas.patente IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD patente
|
|
END IF
|
|
# VERIFICA EMAIL
|
|
CALL inicializar()
|
|
LET url_verification =url_verification CLIPPED,cliente_bas.patente CLIPPED
|
|
CALL apiclient(url_verification) RETURNING estado,codigo_err
|
|
DISPLAY "ESTADO ",estado," ",url_verification
|
|
IF codigo_Err =400 THEN
|
|
CALL msg(1016)
|
|
|
|
NEXT FIELD patente
|
|
|
|
END IF
|
|
|
|
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("formonly.tipo_negocio")
|
|
LET pcondicion = ui.combobox.forname("formonly.cond_pago")
|
|
CALL ccondicion()
|
|
CALL paises()
|
|
# CALL tipo_comprobante()
|
|
BEFORE FIELD generica
|
|
SELECT DISTINCT a.generica FROM vetb00004 a WHERE a.generica = "SI"
|
|
IF STATUS <> NOTFOUND THEN
|
|
NEXT FIELD codigodgii
|
|
END IF
|
|
|
|
ON ACTION buscaZona
|
|
|
|
|
|
CALL consulta_zonas(cliente_bas.codigo)
|
|
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
|
|
|
|
|
|
|
|
ON ACTION buscaProvincia
|
|
LET transportista.cod_zona = cliente_bas.cod_zona
|
|
CALL consulta_provincias(cliente_bas.cod_zona)
|
|
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
|
|
|
|
ON ACTION buscaEmpleado
|
|
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
|
|
|
|
AFTER FIELD zona_postal
|
|
|
|
SELECT DISTINCT a.tipo_cliente FROM vetb00060 a
|
|
WHERE a.tipo_cliente = cliente_bas.tipo_cliente AND a.paga_itbis = 'S'
|
|
|
|
IF STATUS <> NOTFOUND THEN
|
|
|
|
IF cliente_bas.zona_postal IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD zona_postal
|
|
END IF
|
|
END IF
|
|
|
|
AFTER FIELD num_rnc
|
|
IF cliente_bas.codigodgii IS NOT NULL AND cliente_bas.generica='NO' 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
|
|
# CONTROL RELACION ZONAS - PROVINCIAS
|
|
SELECT a.cod_provincia FROM vetb00020 a WHERE a.codigo = cliente_bas.codigo AND
|
|
a.cod_provincia = cliente_bas.cod_provincia
|
|
|
|
END INPUT
|
|
# vendedores auxiliares
|
|
|
|
INPUT ARRAY arr_vend_aux FROM s_aux.* ATTRIBUTE(WITHOUT DEFAULTS)
|
|
BEFORE ROW
|
|
LET curr = arr_curr()
|
|
AFTER FIELD sec_vend_aux
|
|
IF arr_vend_aux[curr].sec_vend_aux IS NOT NULL THEN
|
|
SELECT RTRIM(a.nom1_emp)||' '||a.apell1_emp INTO arr_vend_aux[curr].nombre_vend_aux
|
|
FROM adtb00003 a
|
|
WHERE a.num_emp = arr_vend_aux[curr].sec_vend_aux AND a.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL msg(3)
|
|
NEXT FIELD sec_vend_aux
|
|
END IF
|
|
IF arr_vend_aux[curr].sec_vend_aux = num_emp THEN
|
|
CALL fgl_winmessage("ERROR","NO PUEDE ASIGNAR EJECUTIVO DE ESTE CLIENTE COMO VENDEDOR ADICIONAL","INFO")
|
|
NEXT FIELD sec_vend_aux
|
|
END IF
|
|
END IF
|
|
|
|
ON ACTION busca_auxiliar
|
|
|
|
CALL busca_empleado1() RETURNING p_adtb03.num_emp,p_adtb03.nom1_emp,
|
|
p_adtb03.nom2_emp,
|
|
p_adtb03.apell1_emp,
|
|
p_adtb03.apell2_emp
|
|
LET arr_vend_aux[curr].sec_vend_aux = p_adtb03.num_emp
|
|
LET arr_vend_aux[curr].nombre_vend_aux= p_adtb03.nom1_emp clipped,' ',
|
|
p_adtb03.nom2_emp clipped,' ',
|
|
p_adtb03.apell1_emp clipped,' ',
|
|
p_adtb03.apell2_emp clipped
|
|
|
|
END INPUT
|
|
|
|
INPUT ARRAY arrContactos FROM scontactos.* ATTRIBUTES(WITHOUT DEFAULTS)
|
|
BEFORE INPUT
|
|
CALL ctipoNegocio("formonly.tipo_negocio_contacto")
|
|
AFTER FIELD email_contacto
|
|
IF arrcontactos[arr_curr()].email_contacto IS NOT NULL THEN
|
|
# VERIFICA EMAIL
|
|
CALL inicializar()
|
|
LET url_verification =arrcontactos[arr_curr()].email_contacto CLIPPED
|
|
|
|
CALL apiclient(url_verification) RETURNING estado,codigo_err
|
|
IF codigo_Err =400 THEN
|
|
CALL msg(1016)
|
|
|
|
NEXT FIELD email_contacto
|
|
|
|
END IF
|
|
|
|
END IF
|
|
END INPUT
|
|
{ INPUT ARRAY documentos FROM docu.* ATTRIBUTES(WITHOUT DEFAULTS)
|
|
BEFORE INPUT
|
|
DECLARE buscat CURSOR FOR
|
|
SELECT a.nombre_file, a.ruta, a.arch_tipo, a.tipo
|
|
FROM vetb00062 a
|
|
WHERE a.tipo_Cliente=cliente_bas.tipo_cliente AND a.sec_cliente =cliente_bas.sec_cliente
|
|
|
|
LET idx=1
|
|
FOREACH buscat INTO documentos[idx].nombre_file,documentos[idx].filedestino,
|
|
documentos[idx].arch_tipo,documentos[idx].tipo_file
|
|
LET idx=idx+1
|
|
END FOREACH
|
|
BEFORE ROW
|
|
# LET documentos[arr_curr()].filedestino =NULL
|
|
DISPLAY documentos[arr_curr()].filedestino TO foto
|
|
ON ACTION busca_foto ATTRIBUTE(TEXT="Foto",IMAGE="upload")
|
|
CALL agregar_archivo(arr_curr()) RETURNING tmp_dirfoto
|
|
DISPLAY "destino ",tmp_dirfoto
|
|
LET documentos[arr_curr()].nombre_file = os.Path.basename(tmp_dirfoto)
|
|
LET documentos[arr_curr()].tipo_file = os.Path.extension(tmp_dirfoto)
|
|
LET documentos[arr_curr()].filedestino=tmp_dirfoto
|
|
|
|
LOCATE documentos[arr_curr()].data IN MEMORY
|
|
CALL documentos[arr_curr()].data.readfile(tmp_dirfoto)
|
|
|
|
END INPUT }
|
|
|
|
|
|
ON ACTION CANCEL
|
|
LET INT_FLAG = FALSE
|
|
CALL msg(2)
|
|
|
|
RETURN
|
|
ON ACTION guardar ATTRIBUTE(TEXT="Salvar", IMAGE="fa-life-saver")
|
|
IF cliente_bas.nombre IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD nombre
|
|
END IF
|
|
IF num_emp IS NULL OR num_emp = 0 THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_emp
|
|
END IF
|
|
|
|
# VERIFICA EL EMAIL
|
|
CALL inicializar()
|
|
LET url_verification =cliente_bas.patente CLIPPED
|
|
DISPLAY "url ",url_verification
|
|
|
|
CALL apiclient(url_verification) RETURNING estado,codigo_err
|
|
DISPLAY "CODIGO ",codigo_Err
|
|
IF codigo_Err =400 THEN
|
|
CALL msg(1016)
|
|
NEXT FIELD patente
|
|
|
|
END IF
|
|
|
|
# CONTROL RELACION ZONAS - PROVINCIAS
|
|
SELECT a.cod_provincia FROM vetb00020 a WHERE a.codigo = cliente_bas.codigo AND
|
|
a.cod_provincia = cliente_bas.cod_provincia
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL msg(66)
|
|
NEXT FIELD codigo
|
|
END IF
|
|
|
|
# WHENEVER ERROR CONTINUE
|
|
BEGIN WORK
|
|
UPDATE vetb00004 SET vetb00004.nombre = cliente_bas.nombre,
|
|
vetb00004.codigo = cliente_bas.codigo,
|
|
vetb00004.cod_zona = cliente_bas.cod_zona,
|
|
vetb00004.cod_provincia = cliente_bas.cod_provincia,
|
|
vetb00004.id_ciudad = cliente_bas.id_ciudad,
|
|
vetb00004.telefono = cliente_bas.telefono,
|
|
vetb00004.fax = cliente_bas.fax,
|
|
vetb00004.telex = cliente_bas.telex,
|
|
vetb00004.patente = cliente_bas.patente,
|
|
# limite_credito = cliente_bas.limite_credito,
|
|
vetb00004.zona_postal = cliente_bas.zona_postal,
|
|
vetb00004.num_rnc = cliente_bas.num_rnc,
|
|
vetb00004.nombre_patente = cliente_bas.nombre_patente,
|
|
vetb00004.codigodgii = cliente_bas.codigodgii,
|
|
vetb00004.us_mod = usuarios,
|
|
vetb00004.fech_mod = GETDATE() ,
|
|
vetb00004.telefono_casa = cliente_Bas.telefono_casa,
|
|
vetb00004.puesto_laboral = cliente_bas.puesto_laboral,
|
|
vetb00004.tipo_negocio = cliente_bas.tipo_negocio,
|
|
vetb00004.cond_pago = cliente_Bas.cond_pago,
|
|
vetb00004.url = cliente_bas.url,
|
|
vetb00004.generica = cliente_bas.generica
|
|
WHERE vetb00004.tipo_cliente = cliente_bas.tipo_cliente AND
|
|
vetb00004.sec_cliente = cliente_bas.sec_cliente
|
|
|
|
|
|
{ DELETE FROM vetb00062
|
|
WHERE tipo_cliente=cliente_bas.tipo_cliente AND sec_cliente=cliente_bas.sec_cliente
|
|
FOR idx=1 TO documentos.getLength()
|
|
INSERT INTO vetb00062
|
|
(tipo_cliente, sec_cliente, nombre_file, ruta, arch_tipo, tipo)
|
|
VALUES(cliente_bas.tipo_cliente,cliente_bas.sec_cliente,documentos[idx].nombre_file,documentos[idx].filedestino,
|
|
documentos[idx].arch_tipo,documentos[idx].tipo_file)
|
|
END FOR }
|
|
IF STATUS < 0 THEN
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage("ERROR","NO PUDE ACTUALIZAR CLIENTE","STOP")
|
|
END IF
|
|
SELECT a.nom_puesto INTO role_puesto
|
|
FROM seg0003 a
|
|
WHERE a.usuario = usuarios
|
|
|
|
IF role_puesto = 'ADMINISTRATOR' OR
|
|
role_puesto = 'CXC' THEN
|
|
UPDATE vetb00004 SET limite_credito = cliente_bas.limite_credito
|
|
|
|
WHERE vetb00004.tipo_cliente = cliente_bas.tipo_cliente AND
|
|
vetb00004.sec_cliente = cliente_bas.sec_cliente
|
|
IF STATUS < 0 THEN
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage("ERROR","NO PUDE ACTUALIZAR CLIENTE","STOP")
|
|
END IF
|
|
END IF
|
|
|
|
DISPLAY "PASE ACT CLIENTE "
|
|
|
|
SELECT a.tipo_cliente FROM vetb00005 a
|
|
WHERE a.tipo_cliente = cliente_bas.tipo_cliente AND a.sec_cliente = cliente_bas.sec_cliente
|
|
IF STATUS <> NOTFOUND THEN
|
|
|
|
UPDATE vetb00005 SET vetb00005.calle = cliente_dir.calle,
|
|
vetb00005.urbanizacion = cliente_dir.urbanizacion,
|
|
vetb00005.barrio = cliente_dir.barrio,
|
|
vetb00005.casa_num = cliente_dir.casa_num,
|
|
us_mod = usuarios,
|
|
fech_mod = getdate()
|
|
WHERE vetb00005.tipo_cliente = cliente_bas.tipo_cliente AND
|
|
vetb00005.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 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, usuarios, GETDATE(),
|
|
null, null)
|
|
IF STATUS < 0 THEN
|
|
ROLLBACK WORK
|
|
EXIT PROGRAM
|
|
END IF
|
|
|
|
END IF
|
|
DISPLAY "LLEGUE AL VETB28"
|
|
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
|
|
DISPLAY "empleado upda ",num_emp
|
|
UPDATE vetb00028 SET (sec_vend,us_mod,fech_mod) =
|
|
(num_emp,usuarios,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
|
|
DISPLAY "empleado inst ",num_emp
|
|
INSERT INTO vetb00028 (tipo_cliente,sec_cliente,sec_vend,us_crea,fech_crea)
|
|
VALUES (cliente_bas.tipo_cliente,cliente_bas.sec_cliente,num_emp,usuarios,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 arrcontactos.getLength()
|
|
IF arrContactos[idx].pcontacto IS NOT NULL THEN
|
|
IF arrcontactos[idx].email_contacto IS NOT NULL THEN
|
|
# VERIFICA EMAIL
|
|
CALL inicializar()
|
|
LET url_verification =arrcontactos[idx].email_contacto CLIPPED
|
|
|
|
CALL apiclient(url_verification) RETURNING estado,codigo_err
|
|
IF codigo_Err =400 THEN
|
|
ROLLBACK WORK
|
|
CALL msg(1016)
|
|
|
|
NEXT FIELD email_contacto
|
|
|
|
END IF
|
|
|
|
END IF
|
|
INSERT INTO vetb00087 (tipo_cliente,sec_cliente,contacto,puesto,email,celular,
|
|
telefono_of,telefono_casa,us_crea,fech_crea,puesto1,tipo_negocio_contacto,
|
|
email_estado)
|
|
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,
|
|
usuarios,getdate(),arrcontactos[idx].ppuesto1,arrcontactos[idx].tipo_negocio_contacto,
|
|
arrContactos[idx].email_estado)
|
|
IF STATUS < 0 THEN
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage("ERROR","NO PUDE ACTUALIZAR CLIENTE","STOP")
|
|
END IF
|
|
|
|
END IF
|
|
END FOR
|
|
# Venedor auxiliar
|
|
DELETE FROM vetb00059 WHERE tipo_cliente = cliente_bas.tipo_cliente AND sec_cliente = cliente_bas.sec_cliente
|
|
FOR idx = 1 TO arr_vend_aux.getLength()
|
|
IF arr_Vend_aux[idx].sec_vend_aux IS NOT NULL THEN
|
|
INSERT INTO vetb00059 (tipo_cliente,sec_cliente,sec_Vend_aux,us_crea,fech_crea)
|
|
VALUES (cliente_bas.tipo_cliente,cliente_Bas.sec_cliente,arr_vend_aux[idx].sec_vend_aux,usuarios,getdate())
|
|
END IF
|
|
END FOR
|
|
|
|
COMMIT WORK
|
|
|
|
{ SET CONNECTION "IFMX"
|
|
|
|
SELECT a.tipo_cliente FROM vetb00004 a
|
|
WHERE a.tipo_cliente = cliente_bas.tipo_cliente AND a.sec_cliente = cliente_bas.sec_cliente
|
|
IF STATUS <> NOTFOUND THEN
|
|
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 = usuarios,
|
|
fech_mod = getdate() ,
|
|
codigodgii = cliente_bas.codigodgii
|
|
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
|
|
sec_cliente = cliente_bas.sec_cliente
|
|
ELSE
|
|
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,usuarios,getdate(),NULL,NULL,cliente_bas.codigodgii)
|
|
|
|
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,usuarios,getdate())
|
|
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,usuarios,getdate())
|
|
END IF
|
|
SELECT a.sec_cliente FROM vetb00005 a
|
|
WHERE a.tipo_cliente = cliente_bas.tipo_cliente and
|
|
a.sec_cliente = cliente_bas.sec_cliente
|
|
IF STATUS != NOTFOUND THEN
|
|
|
|
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
|
|
ELSE
|
|
|
|
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, 'veprmt101', getdate(),
|
|
null, null)
|
|
|
|
END IF
|
|
}
|
|
CLEAR FORM
|
|
LET numero_msg = 13
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
|
|
END DIALOG
|
|
END FUNCTION
|
|
FUNCTION tipo_comprobante()
|
|
DEFINE kcodigo char(14), kdescripcion VARCHAR(100),
|
|
codigodgii ui.ComboBox
|
|
|
|
LET codigodgii = ui.ComboBox.forName("formonly.codigodgii")
|
|
CALL codigodgii.clear()
|
|
DECLARE busca_dgii CURSOR FOR
|
|
SELECT a.codigo_dgii,a.tipo_ncf FROM vetb00071 a
|
|
WHERE a.disponible = "S" AND
|
|
a.sucid = 1 AND a.tipo_doc = 'FT'
|
|
ORDER BY a.codigo_dgii
|
|
FOREACH busca_dgii INTO kcodigo,kdescripcion
|
|
LET kcodigo = kcodigo CLIPPED
|
|
|
|
CALL codigodgii.addItem(kcodigo,kdescripcion)
|
|
END FOREACH
|
|
END FUNCTION
|
|
|
|
FUNCTION contenido()
|
|
DEFINE xcuerpo1 STRING
|
|
LET xcuerpo1 = "<!DOCTYPE html><body>
|
|
<head>
|
|
<style>
|
|
table, th, td {
|
|
border: 1px solid black;
|
|
border-collapse: collapse;
|
|
}
|
|
</style>
|
|
</head>
|
|
<img src='.\\imagenes\\logo.png' width='400' height='200' >
|
|
"
|
|
LET xcuerpo1 = xcuerpo1 CLIPPED,"<h1>BIENBENIDO ",cliente_bas.nombre CLIPPED,"</h1>"
|
|
|
|
LET xcuerpo1 = xcuerpo1 CLIPPED,
|
|
"<h2>Es un placer para nosotros poder contar con la confianza que usted deposita en nuestra empresa</h2>"
|
|
LET xcuerpo1 = xcuerpo1 CLIPPED,"<h2>El ejecutivo que lo atiende es ",nombre_v CLIPPED,"</h2>"
|
|
LET xcuerpo1 = xcuerpo1 CLIPPED,"<h2>Puede contactarlo a los telefonos: (809)-227-1322 En Santo Domingo o a su numero celular: ",
|
|
telefono_Vend CLIPPED," Asi como tambien a su correo electronico ",email_vend CLIPPED,
|
|
"<table><tr><th>Productos</th><th>Unidades</th> <th>cantidad</th><th>"
|
|
|
|
LET xcuerpo1 = xcuerpo1 CLIPPED,"</table></body>"
|
|
RETURN xcuerpo1
|
|
END FUNCTION
|
|
FUNCTION inicializar()
|
|
LET url_verification =NULL #'https://api.apilayer.com/email_verification/'
|
|
END FUNCTION
|
|
|
|
FUNCTION agregar_archivo(i)
|
|
|
|
DEFINE filepath STRING
|
|
DEFINE tmpfile STRING
|
|
DEFINE i INTEGER
|
|
DEFINE tmp_destino,nombre_foto string
|
|
|
|
LET filepath= NULL
|
|
CALL ui.Interface.frontCall(
|
|
"standard","openfile",
|
|
[NULL,"Images","*.jpg *.png *.gif *.pdf","Seleccione archivo"],
|
|
[filepath]
|
|
)
|
|
|
|
{IF filepath IS NULL THEN
|
|
RETURN
|
|
END IF}
|
|
LET nombre_foto =cliente_bas.tipo_cliente USING "<<<<<<<<","-",cliente_bas.sec_cliente USING "<<<<<<<<","-",i USING "<<<<"
|
|
LET tmpfile = FGL_GETENV("TEMP"),"\\",nombre_foto CLIPPED,".jpg"
|
|
LET tmp_destino=fgl_getenv("IMAGENES"),"\\clientes\\",nombre_foto CLIPPED,".",os.Path.extension(filepath)
|
|
|
|
DISPLAY "tmp file",tmpfile
|
|
DISPLAY "nombre ",nombre_foto
|
|
-- Copia local FE ? FE
|
|
CALL fgl_getfile(filepath, tmp_destino)
|
|
|
|
RETURN tmp_destino
|
|
END FUNCTION
|