466 lines
15 KiB
Plaintext
466 lines
15 KiB
Plaintext
GLOBALS
|
|
"svglobals.4gl"
|
|
|
|
DEFINE quejas RECORD
|
|
num_doc INT,
|
|
num_oc INT,
|
|
cotizacion_no INT,
|
|
tipo_cliente SMALLINT,
|
|
sec_cliente INT,
|
|
nombre VARCHAR(100),
|
|
rnc VARCHAR(11),
|
|
telefono CHAR(25),
|
|
fecha DATE,
|
|
correo VARCHAR(100),
|
|
sec_vend INT,
|
|
vendedor VARCHAR(50),
|
|
comentario VARCHAR(100),
|
|
via VARCHAR(60),
|
|
pcodn SMALLINT,
|
|
pcodgrupo SMALLINT,
|
|
pcodtipo SMALLINT,
|
|
pcodsec SMALLINT,
|
|
producto VARCHAR(100),
|
|
lote VARCHAR(100),
|
|
fecha_compra DATE,
|
|
sucid SMALLINT,
|
|
pestado1 VARCHAR(50)
|
|
|
|
END RECORD,
|
|
documento BYTE,
|
|
noexiste BOOLEAN
|
|
|
|
DEFINE representante VARCHAR(100),
|
|
arr_documentos DYNAMIC ARRAY OF RECORD
|
|
pnum_doc INT,
|
|
fecha DATE,
|
|
cliente VARCHAR(100),
|
|
pestado VARCHAR(50)
|
|
END RECORD,
|
|
respuesta STRING
|
|
|
|
DEFINE arr_quejas DYNAMIC ARRAY OF RECORD
|
|
factura INT,
|
|
fecha_factura DATE,
|
|
codigo VARCHAR(25),
|
|
descripcion VARCHAR(180),
|
|
cantidad DEC(12,5),
|
|
precio DEC(12,2),
|
|
descuento DEC(12,2),
|
|
valor DEC(12,2),
|
|
pcod_n SMALLINT,
|
|
pcod_grupo SMALLINT,
|
|
pcod_tipo SMALLINT,
|
|
pcod_sec SMALLINT,
|
|
sucid1 SMALLINT
|
|
END RECORD
|
|
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
|
|
OPTIONS INPUT WRAP
|
|
CONNECT to "decomarmol" AS "IFMX" USER usuarios USING clave
|
|
|
|
CALL svprmt003()
|
|
END MAIN
|
|
FUNCTION svprmt003()
|
|
OPEN WINDOW w1 WITH FORM "svfmmt003"
|
|
MENU
|
|
ON ACTION adicionar
|
|
CALL svprad003()
|
|
ON ACTION consultar
|
|
CALL svprmf003()
|
|
ON ACTION salir
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
FUNCTION svprad003()
|
|
|
|
DIALOG ATTRIBUTE(UNBUFFERED)
|
|
|
|
INPUT BY NAME quejas.*
|
|
BEFORE INPUT
|
|
CALL localidades()
|
|
LET quejas.fecha = TODAY
|
|
|
|
SELECT a.nom1_emp || ' '|| a.apell1_emp INTO representante FROM adtb00003 a,seg0001 b
|
|
WHERE b.usuario = usuarios AND a.num_emp = b.num_emp
|
|
DISPLAY BY NAME representante,usuarios,quejas.fecha
|
|
|
|
LET selec =
|
|
"SELECT TOP 20 a.num_doc,a.fecha,a.nombre,a.estado FROM svtb00004 a ",
|
|
"ORDER BY a.fecha "
|
|
PREPARE comando1 FROM selec
|
|
DECLARE busca_doc1 CURSOR FOR comando1
|
|
|
|
LET idx = 1
|
|
FOREACH busca_doc1 INTO arr_documentos[idx].*
|
|
LET idx = idx +1
|
|
END FOREACH
|
|
|
|
ON ACTION cliente
|
|
CALL busca_cliente() RETURNING quejas.tipo_cliente,quejas.sec_cliente,quejas.nombre
|
|
DISPLAY BY NAME quejas.tipo_cliente,quejas.sec_cliente,quejas.nombre
|
|
AFTER FIELD num_oc
|
|
IF quejas.num_oc IS NOT NULL THEN
|
|
CALL busca_datos()
|
|
END IF
|
|
AFTER FIELD sec_cliente
|
|
|
|
IF quejas.tipo_cliente IS NOT NULL THEN
|
|
|
|
DECLARE busca_doc CURSOR FOR
|
|
SELECT a.factura,a.fecha_factura,c.descrip_esp,b.cantidad,b.precio,
|
|
(b.precio*b.cantidad)*(b.cantidad_2/100),
|
|
b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_Sec,a.sucid
|
|
FROM vetb00002 a,vetb00003 b,iptb00002 c
|
|
WHERE a.factura = b.factura AND b.cod_n = c.cod_n AND b.cod_grupo = c.cod_grupo AND b.cod_tipo = c.cod_tipo AND
|
|
b.cod_sec = c.cod_sec AND
|
|
a.tipo_cliente = quejas.tipo_cliente AND a.sec_cliente = quejas.sec_cliente
|
|
LET idx = 1
|
|
FOREACH busca_doc INTO arr_quejas[idx].factura,arr_quejas[idx].fecha_factura,
|
|
arr_quejas[idx].descripcion,arr_quejas[idx].cantidad,
|
|
arr_quejas[idx].precio,arr_quejas[idx].descuento,
|
|
arr_quejas[idx].pcod_n,arr_quejas[idx].pcod_grupo,
|
|
arr_quejas[idx].pcod_tipo,arr_quejas[idx].pcod_sec
|
|
LET arr_quejas[idx].codigo = arr_quejas[idx].pcod_n USING "&&&&","-",
|
|
arr_quejas[idx].pcod_grupo USING "&&&&","-",
|
|
arr_quejas[idx].pcod_tipo USING "&&&&&","-",arr_quejas[idx].pcod_sec USING "&&&&&"
|
|
LET arr_quejas[idx].valor = arr_quejas[idx].cantidad* arr_quejas[idx].precio
|
|
|
|
END FOREACH
|
|
END IF
|
|
|
|
AFTER INPUT
|
|
END INPUT
|
|
DISPLAY ARRAY arr_quejas TO squejas.*
|
|
BEFORE ROW
|
|
LET quejas.pcodn = arr_quejas[arr_curr()].pcod_n
|
|
LET quejas.pcodgrupo = arr_quejas[arr_curr()].pcod_grupo
|
|
LET quejas.pcodtipo = arr_quejas[arr_curr()].pcod_tipo
|
|
LET quejas.pcodsec = arr_quejas[arr_curr()].pcod_sec
|
|
LET quejas.producto = arr_quejas[arr_curr()].descripcion
|
|
LET quejas.sucid = arr_quejas[arr_curr()].sucid1
|
|
|
|
DISPLAY BY NAME quejas.pcodn,quejas.pcodgrupo,quejas.pcodtipo,quejas.pcodsec,
|
|
quejas.producto
|
|
|
|
END DISPLAY
|
|
DISPLAY ARRAY arr_documentos TO sdocumentos.*
|
|
END DISPLAY
|
|
ON ACTION guardar
|
|
CALL actualiza_datos()
|
|
ON ACTION CANCEL
|
|
EXIT PROGRAM
|
|
|
|
END DIALOG
|
|
CLOSE WINDOW w1
|
|
END FUNCTION
|
|
FUNCTION svprmf003()
|
|
|
|
DIALOG ATTRIBUTE(UNBUFFERED)
|
|
|
|
CONSTRUCT criterio ON a.num_doc,a.nombre,a.num_oc,a.cotizacion_no,a.rnc,a.telefono
|
|
FROM num_doc,nombre,num_oc,cotizacion_no,rnc,telefono
|
|
BEFORE CONSTRUCT
|
|
CALL localidades()
|
|
LET quejas.fecha = TODAY
|
|
|
|
SELECT a.nom1_emp || ' '|| a.apell1_emp INTO representante FROM adtb00003 a,seg0001 b
|
|
WHERE b.usuario = usuarios AND a.num_emp = b.num_emp
|
|
DISPLAY BY NAME representante,usuarios,quejas.fecha
|
|
|
|
LET selec =
|
|
"SELECT TOP 20 a.num_doc,a.fecha,a.nombre,a.estado FROM svtb00004 a ",
|
|
"ORDER BY a.fecha "
|
|
PREPARE comando11 FROM selec
|
|
DECLARE busca_doc11 CURSOR FOR comando11
|
|
|
|
LET idx = 1
|
|
FOREACH busca_doc11 INTO arr_documentos[idx].*
|
|
LET idx = idx +1
|
|
END FOREACH
|
|
ON ACTION buscar
|
|
|
|
LET selec = "SELECT a.num_doc
|
|
,a.num_oc
|
|
,a.cotizacion_no
|
|
,a.tipo_cliente
|
|
,a.sec_cliente
|
|
,a.nombre
|
|
,a.rnc
|
|
,a.telefono
|
|
,CONVERT(DATE,a.fecha,103)
|
|
,a.correo
|
|
,a.sec_vend
|
|
,RTRIM(b.nom1_emp)+ ' '+b.apell1_emp
|
|
,a.comentario
|
|
,a.via
|
|
,a.cod_n
|
|
,a.cod_grupo
|
|
,a.cod_tipo
|
|
,a.cod_sec
|
|
,a.producto
|
|
,a.lote
|
|
,CONVERT(DATE,a.fecha_compra,103)
|
|
,a.sucid
|
|
,a.estado
|
|
,a.us_crea
|
|
,a.fech_crea
|
|
FROM svtb00004 a LEFT OUTER JOIN adtb00003 b ON a.sec_vend = b.num_emp WHERE ",criterio CLIPPED
|
|
|
|
PREPARE comando10 FROM selec
|
|
DECLARE busca_f1 SCROLL CURSOR FOR comando10
|
|
OPEN busca_f1
|
|
|
|
FETCH FIRST busca_f1 INTO quejas.*
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL fgl_winmessage("INFO","NO EXISTEN REGISTROS CON ESTA CONDICION","INFO")
|
|
RETURN
|
|
END IF
|
|
DISPLAY BY NAME quejas.*
|
|
|
|
MENU "NAVEGACION"
|
|
COMMAND "Siguiente"
|
|
|
|
FETCH NEXT busca_f1 INTO quejas.*
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL fgl_winmessage("INFO","NO EXISTEN REGISTROS EN ESTA DIRECCION","INFO")
|
|
EXIT MENU
|
|
END IF
|
|
DISPLAY BY NAME quejas.*
|
|
COMMAND "Anterior"
|
|
|
|
FETCH PREVIOUS busca_f1 INTO quejas.*
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL fgl_winmessage("INFO","NO EXISTEN REGISTROS EN ESTA DIRECCION","INFO")
|
|
EXIT MENU
|
|
END IF
|
|
DISPLAY BY NAME quejas.*
|
|
COMMAND "Primero"
|
|
|
|
FETCH FIRST busca_f1 INTO quejas.*
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL fgl_winmessage("INFO","NO EXISTEN REGISTROS EN ESTA DIRECCION","INFO")
|
|
EXIT MENU
|
|
END IF
|
|
DISPLAY BY NAME quejas.*
|
|
COMMAND "Ultimo"
|
|
|
|
FETCH LAST busca_f1 INTO quejas.*
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL fgl_winmessage("INFO","NO EXISTEN REGISTROS EN ESTA DIRECCION","INFO")
|
|
EXIT MENU
|
|
END IF
|
|
DISPLAY BY NAME quejas.*
|
|
COMMAND KEY("N") "ANULAR"
|
|
IF fgl_winquestion("INFO","ESTA SEGURO QUE DESEA ANULAR ESTA INFORMACION?","NO","YES|NO","QUESTION",0) THEN
|
|
UPDATE svtb00004 SET estado = 'ANULADO',us_mod =usuarios,fech_mod = getedate()
|
|
WHERE num_Doc = quejas.num_doc
|
|
END IF
|
|
COMMAND "Retornar"
|
|
EXIT MENU
|
|
END MENU
|
|
AFTER CONSTRUCT
|
|
IF INT_FLAG THEN
|
|
RETURN
|
|
LET INT_FLAG = FALSE
|
|
END IF
|
|
|
|
END CONSTRUCT
|
|
ON ACTION CANCEL
|
|
LET INT_FLAG = FALSE
|
|
RETURN
|
|
END DIALOG
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION busca_cliente()
|
|
DEFINE selec, criterio STRING,
|
|
arr_clientes DYNAMIC ARRAY OF RECORD
|
|
tipo_cliente SMALLINT,
|
|
sec_cliente INT,
|
|
nombre1 VARCHAR(100)
|
|
END RECORD,
|
|
ptipo_cliente SMALLINT,
|
|
psec_cliente INT,
|
|
pnombre VARCHAR(100)
|
|
OPEN WINDOW w2 WITH FORM "svfmwd001"
|
|
|
|
CONSTRUCT BY NAME criterio ON a.nombre,a.num_rnc
|
|
|
|
LET selec = "SELECT a.tipo_cliente,a.sec_cliente,a.nombre,a.num_rnc FROM vetb00004 a WHERE ",criterio CLIPPED,
|
|
" AND a.status_t IS NULL"
|
|
PREPARE comando FROM selec
|
|
DECLARE busca_cli CURSOR FOR comando
|
|
|
|
LET idx = 1
|
|
FOREACH busca_cli INTO arr_clientes[idx].*
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
|
|
DISPLAY ARRAY arr_clientes TO sclientes.*
|
|
AFTER DISPLAY
|
|
LET ptipo_cliente = arr_clientes[arr_curr()].tipo_cliente
|
|
LET psec_cliente = arr_clientes[arr_curr()].sec_cliente
|
|
LET pnombre = arr_clientes[arr_curr()].nombre1
|
|
EXIT DISPLAY
|
|
END DISPLAY
|
|
CLOSE WINDOW w2
|
|
RETURN ptipo_cliente,psec_cliente,pnombre
|
|
END FUNCTION
|
|
FUNCTION actualiza_datos()
|
|
DEFINE ultimo,prowid INT
|
|
SELECT a.num_Doc INTO ultimo FROM svtb00006 a
|
|
IF STATUS = NOTFOUND THEN
|
|
LET ultimo = 1
|
|
INSERT INTO svtb00006 (num_doc,us_crea,fech_crea) VALUES (ultimo,usuarios,getdate())
|
|
ELSE
|
|
LET ultimo = ultimo + 1
|
|
UPDATE svtb00006 SET num_doc = ultimo,us_crea = usuarios,fech_crea = getdate()
|
|
END IF
|
|
LET quejas.num_doc = ultimo
|
|
BEGIN WORK
|
|
INSERT INTO svtb00004
|
|
(num_doc
|
|
,fecha
|
|
,num_oc
|
|
,cotizacion_no
|
|
,tipo_cliente
|
|
,sec_cliente
|
|
,nombre
|
|
,rnc
|
|
,telefono
|
|
,correo
|
|
,sec_vend
|
|
,comentario
|
|
,via
|
|
,cod_n
|
|
,cod_grupo
|
|
,cod_tipo
|
|
,cod_sec
|
|
,producto
|
|
,lote
|
|
,fecha_compra
|
|
,sucid
|
|
,estado
|
|
,us_crea
|
|
,fech_crea)
|
|
VALUES
|
|
(quejas.num_doc
|
|
,quejas.fecha
|
|
,quejas.num_oc
|
|
,quejas.cotizacion_no
|
|
,quejas.tipo_cliente
|
|
,quejas.sec_cliente
|
|
,quejas.nombre
|
|
,quejas.rnc
|
|
,quejas.telefono
|
|
,quejas.correo
|
|
,quejas.sec_vend
|
|
,quejas.comentario
|
|
,quejas.via
|
|
,quejas.pcodn
|
|
,quejas.pcodgrupo
|
|
,quejas.pcodtipo
|
|
,quejas.pcodsec
|
|
,quejas.producto
|
|
,quejas.lote
|
|
,quejas.fecha_compra
|
|
,quejas.sucid
|
|
,'PENDIENTE'
|
|
,usuarios
|
|
,getdate()
|
|
)
|
|
LET prowid = 1
|
|
FOR idx = 1 TO arr_quejas.getLength()
|
|
IF arr_quejas[idx].factura IS NOT NULL THEN
|
|
IF arr_quejas[idx].pcod_sec IS NOT NULL THEN
|
|
INSERT INTO svtb00005
|
|
(num_doc
|
|
,factura
|
|
,fecha_factura
|
|
,codigo
|
|
,descripcion
|
|
,cantidad
|
|
,precio
|
|
,descuento
|
|
,valor
|
|
,cod_n
|
|
,cod_grupo
|
|
,cod_tipo
|
|
,cod_sec,
|
|
rowid)
|
|
VALUES
|
|
(quejas.num_doc
|
|
,arr_quejas[idx].factura
|
|
,arr_quejas[idx].fecha_factura
|
|
,arr_quejas[idx].codigo
|
|
,arr_quejas[idx].descripcion
|
|
,arr_quejas[idx].cantidad
|
|
,arr_quejas[idx].precio
|
|
,arr_quejas[idx].descuento
|
|
,arr_quejas[idx].valor
|
|
,arr_quejas[idx].pcod_n
|
|
,arr_quejas[idx].pcod_grupo
|
|
,arr_quejas[idx].pcod_tipo
|
|
,arr_quejas[idx].pcod_sec
|
|
,prowid)
|
|
LET prowid = prowid +1
|
|
END IF
|
|
|
|
END IF
|
|
END FOR
|
|
COMMIT WORK
|
|
CALL fgl_winmessage("INFO","ADICION EXITOSA","INFO")
|
|
END FUNCTION
|
|
FUNCTION busca_Datos()
|
|
SELECT a.tipo_cliente,a.sec_cliente,b.nombre,a.cotizacion_no,b.num_rnc,a.sec_vend,RTRIM(c.nom1_emp)||' '||c.apell1_Emp
|
|
INTO quejas.tipo_cliente,quejas.sec_cliente,quejas.nombre,quejas.cotizacion_no,quejas.rnc,
|
|
quejas.sec_vend,quejas.vendedor
|
|
FROM prtb00012 a,vetb00004 b,adtb00003 c
|
|
WHERE a.num_oc = quejas.num_oc AND a.tipo_cliente = b.tipo_cliente AND
|
|
a.sec_cliente = b.sec_cliente AND a.sec_vend = c.num_emp
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL fgl_winmessage("INFO","ORDEN PEDIDOS NO EXISTE","INFO")
|
|
LET noexiste = TRUE
|
|
RETURN
|
|
ELSE
|
|
LET noexiste = FALSE
|
|
END IF
|
|
DISPLAY BY NAME quejas.tipo_cliente,quejas.sec_cliente,quejas.nombre,quejas.cotizacion_no,quejas.rnc,
|
|
quejas.sec_vend,quejas.vendedor
|
|
SELECT DISTINCT a.num_oc FROM svtb00004 a WHERE a.num_oc = quejas.num_oc AND a.estado <> 'ANULADO'
|
|
IF STATUS <> NOTFOUND THEN
|
|
LET respuesta = fgl_winquestion("EXISTE","NUMERO DE ORDEN TIENE DOCUMENTO DE QUEJAS, DESEAS ADICIONAR ESTE DE TODAS FORMAS?","NO","YES|NO","QUESTION",0)
|
|
IF respuesta = "NO" THEN
|
|
LET noexiste = TRUE
|
|
RETURN
|
|
END IF
|
|
END IF
|
|
END FUNCTION
|
|
|
|
FUNCTION localidades()
|
|
DEFINE klocalidad SMALLINT,kdescripcion CHAR(30),
|
|
plocalidad ui.combobox
|
|
|
|
LET plocalidad = ui.combobox.forname("formonly.sucid")
|
|
|
|
DECLARE busca_local CURSOR FOR
|
|
SELECT a.sucid,a.nombre_display FROM sucursales a WHERE localidad_venta = "SI"
|
|
|
|
CALL plocalidad.clear()
|
|
|
|
FOREACH busca_local INTO klocalidad,kdescripcion
|
|
CALL plocalidad.additem(klocalidad,kdescripcion)
|
|
END FOREACH
|
|
|
|
END FUNCTION |