1378 lines
49 KiB
Plaintext
1378 lines
49 KiB
Plaintext
{
|
|
------------------------------------------------------------------
|
|
PROGRAMA : PRPRMT008
|
|
OBJETIVO : Ordenes de Pedidos
|
|
PROGRAMADOR : Oscar Castillo
|
|
FECHA REALIZACION : Sábado 12 de Agosto de 2000
|
|
MODIFICADO POR : Victor Gomez C
|
|
FECHA MODIFICACION: Wednesday, 10 January, 2001
|
|
MODIFICADO POR : Victor Gomez C
|
|
FECHA MODIFICACION: Tuesday, January 16, 2001
|
|
Crear campos observacion y fecha de cierre de la
|
|
orden de produccion.
|
|
------------------------------------------------------------------
|
|
}
|
|
GLOBALS "prprgb000.4gl"
|
|
DEFINE nombre LIKE vetb00004.nombre,
|
|
descrip_esp_c,descrip_esp LIKE iptb00002.descrip_esp,
|
|
unidad LIKE iptb00002.unidad_med,
|
|
unidad_c LIKE intb00001.unidad_med,
|
|
descrip CHAR(20),
|
|
esta,opt4 CHAR(1),
|
|
nombre_vend,nombres,apellidos CHAR(40),fcalle CHAR(25),
|
|
fcasa_num CHAR(5), fbarrio,furbanizacion CHAR(15),
|
|
nombmp CHAR(120),
|
|
monto_desc,total1,p_costos1,total_i,total_mo DECIMAL(12,2),
|
|
ult_numero INTEGER,
|
|
vetb05 RECORD LIKE vetb00005.*
|
|
|
|
DEFINE archivo,filename,sysos CHAR(120),
|
|
cels CHAR(20),
|
|
cnt SMALLINT
|
|
|
|
DEFINE primera,imprime_ana,imprime_cliente CHAR(1),
|
|
cliente CHAR(70),
|
|
codigo_g,codigo_ant,codigo_act CHAR(6),
|
|
ret CHAR(30),
|
|
ejecuta,localiza CHAR(80),
|
|
documento CHAR(9)
|
|
|
|
DEFINE numero_oc INTEGER,
|
|
f_itbis DEC(3,2)
|
|
DEFINE total_v,sub_total,sub_total1,sub_total2,balance DECIMAL(10,2),
|
|
descrip_p CHAR(30)
|
|
DEFINE prtb08 RECORD LIKE prtb00012.*,
|
|
prtb09 RECORD LIKE prtb00009.*
|
|
|
|
DEFINE p_totales RECORD
|
|
sub_total DEC(8,2), #-> Sub-Total de los Productos menos descuento
|
|
unidad_med CHAR(4), #-> Unidad de medida del producto
|
|
total_v DEC(10,2) #-> Total de la venta
|
|
END RECORD
|
|
|
|
DEFINE arr_prtb08 ARRAY[200] OF RECORD
|
|
fila SMALLINT,
|
|
cod_n LIKE prtb00013.cod_n,
|
|
cod_grupo LIKE prtb00013.cod_grupo,
|
|
cod_tipo LIKE prtb00013.cod_tipo,
|
|
cod_sec LIKE prtb00013.cod_sec,
|
|
altura_zocalo LIKE prtb00013.altura_zocalo,
|
|
terminacion CHAR(1),
|
|
bisel LIKE prtb00013.bisel,
|
|
cantidad LIKE prtb00013.cantidad,
|
|
precio LIKE prtb00013.precio,
|
|
descuento LIKE prtb00013.descuento,
|
|
total_p DECIMAL(10,2)
|
|
END RECORD
|
|
|
|
FUNCTION prprmt008()
|
|
# WHENEVER ERROR CONTINUE
|
|
CLEAR SCREEN
|
|
OPTIONS
|
|
FORM LINE 8,
|
|
ERROR LINE 23,
|
|
COMMENT LINE 23
|
|
CALL pantalla()
|
|
OPEN FORM ctfmmt008 FROM "prfmmt008"
|
|
DISPLAY FORM ctfmmt008
|
|
CALL pantalla()
|
|
DISPLAY "prprmt008" AT 4,3
|
|
DISPLAY "Orden De Pedido" AT 6,32
|
|
|
|
MENU "OPCIONES"
|
|
COMMAND "Adicionar" "<Esc> Adiciona Registro <Supr> Cancela Operacion"
|
|
LET INT_FLAG = FALSE
|
|
CLEAR FORM
|
|
CALL prpcad008()
|
|
COMMAND "Consultar"
|
|
LET INT_FLAG = FALSE
|
|
CLEAR FORM
|
|
CALL prpcmf008()
|
|
COMMAND "Salir" "Retorna Menu Anterior"
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
|
|
FUNCTION prpcad008()
|
|
## Captura los datos que va a contener el registro
|
|
|
|
LET INT_FLAG = false
|
|
{ SELECT MAX(num_oc) INTO ult_numero
|
|
FROM prtb00012
|
|
|
|
IF ult_numero IS NULL THEN
|
|
LET ult_numero = 0
|
|
END IF
|
|
LET ult_numero = ult_numero + 1 }
|
|
LET prtb08.num_oc = 0
|
|
LET prtb08.fecha_entrega = TODAY + 15
|
|
|
|
LABEL vuelve:
|
|
|
|
INPUT BY NAME prtb08.num_oc,prtb08.fecha_oc,prtb08.tipo_cliente,
|
|
prtb08.sec_cliente,prtb08.sec_vend,prtb08.fecha_entrega,
|
|
prtb08.cond_pago,prtb08.ubicacion WITHOUT DEFAULTS
|
|
|
|
ON KEY(CONTROL-W)
|
|
CASE
|
|
WHEN INFIELD(sec_vend)
|
|
CALL vendedor8es()
|
|
DISPLAY BY NAME prtb07.sec_vend,nombre_vend ATTRIBUTE(BLUE)
|
|
EXIT CASE
|
|
WHEN INFIELD (tipo_cliente)
|
|
CALL busca_cliente8()
|
|
DISPLAY BY NAME prtb08.tipo_cliente,prtb08.sec_cliente,nombre ATTRIBUTE(BLUE)
|
|
EXIT CASE
|
|
WHEN INFIELD (sec_cliente)
|
|
CALL busca_cliente8()
|
|
DISPLAY BY NAME prtb08.tipo_cliente,prtb08.sec_cliente,nombre ATTRIBUTE(BLUE)
|
|
EXIT CASE
|
|
END CASE
|
|
|
|
AFTER FIELD sec_cliente
|
|
IF prtb08.sec_cliente IS NOT NULL THEN
|
|
SELECT a.telefono, a.fax INTO prtb08.telefono, prtb08.fax
|
|
FROM vetb00004 a
|
|
WHERE a.tipo_cliente = prtb08.tipo_cliente
|
|
AND a.sec_cliente = prtb08.sec_cliente
|
|
|
|
SELECT b.calle,b.casa_num,b.barrio,b.urbanizacion
|
|
INTO fcalle,fcasa_num,fbarrio,furbanizacion
|
|
FROM vetb00005 b
|
|
WHERE b.tipo_cliente = prtb08.tipo_cliente
|
|
AND b.sec_cliente = prtb08.sec_cliente
|
|
|
|
LET prtb08.direccion = fcalle CLIPPED,",",fcasa_num CLIPPED,",",
|
|
fbarrio CLIPPED,",",furbanizacion CLIPPED
|
|
|
|
DISPLAY BY NAME prtb08.telefono, prtb08.fax, prtb08.direccion
|
|
|
|
END IF
|
|
|
|
AFTER FIELD fecha_entrega
|
|
IF prtb08.fecha_entrega IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha_entrega
|
|
END IF
|
|
IF prtb08.fecha_entrega < prtb08.fecha_oc THEN
|
|
LET numero_msg =51
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha_entrega
|
|
END IF
|
|
{
|
|
AFTER FIELD nombre_file
|
|
LET nombmp = FGL_GETENV("FGLBMP")
|
|
LET nombmp = nombmp CLIPPED,prtb08.nombre_file CLIPPED,".bmp"
|
|
DISPLAY nombmp TO bmpfld
|
|
}
|
|
AFTER FIELD sec_vend
|
|
IF prtb08.sec_vend IS NOT NULL THEN
|
|
SELECT a.nom1_emp,a.apell1_emp INTO nombres,apellidos
|
|
FROM adtb00003 a
|
|
WHERE a.num_emp = prtb08.sec_vend
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD sec_vend
|
|
END IF
|
|
LET nombre_vend = nombres CLIPPED," ",apellidos CLIPPED
|
|
DISPLAY BY NAME nombre_vend ATTRIBUTE(BLUE)
|
|
END IF
|
|
|
|
BEFORE FIELD fecha_oc
|
|
LET prtb08.fecha_oc = TODAY
|
|
DISPLAY BY NAME prtb08.fecha_oc ATTRIBUTE(BLUE)
|
|
|
|
AFTER FIELD fecha_oc
|
|
IF prtb08.fecha_oc > TODAY THEN
|
|
LET numero_msg = 189
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha_oc
|
|
END IF
|
|
|
|
AFTER FIELD cond_pago
|
|
IF prtb08.cond_pago IS NULL THEN
|
|
LET numero_msg = 12
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cond_pago
|
|
END IF
|
|
|
|
SELECT a.descrip INTO descrip_p
|
|
FROM vetb00012 a
|
|
WHERE a.cond_pago = prtb08.cond_pago AND
|
|
a.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cond_pago
|
|
END IF
|
|
DISPLAY BY NAME descrip_p ATTRIBUTE(BLUE)
|
|
|
|
AFTER FIELD sec_cliente
|
|
SELECT a.nombre,a.telefono,a.fax
|
|
INTO nombre,prtb08.telefono,prtb08.fax
|
|
FROM vetb00004 a
|
|
WHERE a.tipo_cliente = prtb08.tipo_cliente AND
|
|
a.sec_cliente = prtb08.sec_cliente AND
|
|
a.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo_cliente
|
|
END IF
|
|
|
|
SELECT a.* INTO vetb05.*
|
|
FROM vetb00005 a
|
|
WHERE a.tipo_cliente = prtb08.tipo_cliente AND
|
|
a.sec_cliente = prtb08.sec_cliente
|
|
LET prtb08.direccion = vetb05.calle CLIPPED," ",vetb05.casa_num CLIPPED,vetb05.barrio CLIPPED
|
|
|
|
DISPLAY BY NAME prtb08.direccion,prtb08.telefono,nombre ATTRIBUTE(BLUE)
|
|
SELECT SUM(a.valor) INTO balance
|
|
FROM cctb00001 a
|
|
WHERE a.tipo_cliente = prtb08.tipo_cliente
|
|
AND a.sec_cliente = prtb08.sec_cliente
|
|
AND a.status_t IS NULL
|
|
|
|
IF balance IS NULL THEN
|
|
LET balance = 0
|
|
END IF
|
|
DISPLAY BY NAME balance
|
|
|
|
AFTER INPUT
|
|
IF INT_FLAG THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET INT_FLAG = FALSE
|
|
RETURN
|
|
END IF
|
|
END INPUT
|
|
|
|
LET p_totales.sub_total = 0
|
|
LET prtb08.cantidad_i = 0
|
|
LET prtb08.precio_i = 0
|
|
LET prtb08.cantidad_mo = 0
|
|
LET prtb08.precio_mo = 0
|
|
LET prtb08.transporte = 0
|
|
LET prtb08.itbis = 0
|
|
LET p_totales.total_v = 0
|
|
|
|
INPUT ARRAY arr_prtb08 FROM s_pedido.*
|
|
|
|
BEFORE ROW
|
|
LET curr = arr_curr()
|
|
LET scr_l = scr_line()
|
|
LET sub_total = 0
|
|
|
|
BEFORE FIELD cod_n
|
|
LET arr_prtb08[curr].fila = arr_curr()
|
|
DISPLAY arr_prtb08[curr].fila TO s_pedido[scr_l].fila
|
|
|
|
AFTER FIELD cod_sec
|
|
LET descrip_esp = NULL
|
|
LET p_totales.unidad_med = NULL
|
|
|
|
IF arr_prtb08[curr].cod_sec IS NOT NULL THEN
|
|
SELECT a.descrip_esp, a.unidad_med INTO descrip_esp,p_totales.unidad_med
|
|
FROM iptb00002 a
|
|
WHERE a.cod_n = arr_prtb08[curr].cod_n AND
|
|
a.cod_tipo = arr_prtb08[curr].cod_tipo AND
|
|
a.cod_grupo = arr_prtb08[curr].cod_grupo AND
|
|
a.cod_sec = arr_prtb08[curr].cod_sec AND
|
|
a.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
DISPLAY BY NAME descrip_esp,p_totales.unidad_med
|
|
|
|
LET p_costos1 = 0
|
|
SELECT MAX(precio) INTO p_costos1 FROM vetb00025 a
|
|
WHERE a.tipo_cliente = prtb08.tipo_cliente AND
|
|
a.sec_cliente = prtb08.sec_cliente AND
|
|
a.cod_n = arr_prtb08[curr].cod_n AND
|
|
a.cod_grupo = arr_prtb08[curr].cod_grupo AND
|
|
a.cod_tipo = arr_prtb08[curr].cod_tipo AND
|
|
a.cod_sec = arr_prtb08[curr].cod_sec AND
|
|
a.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
SELECT MAX(precio) INTO p_costos1 FROM vetb00025 a
|
|
WHERE a.tipo_cliente IS NULL AND
|
|
a.cod_n = arr_prtb08[curr].cod_n AND
|
|
a.cod_tipo = arr_prtb08[curr].cod_tipo AND
|
|
a.cod_grupo = arr_prtb08[curr].cod_grupo AND
|
|
a.cod_sec = arr_prtb08[curr].cod_sec AND
|
|
a.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 85
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
END IF
|
|
LET arr_prtb08[curr].precio = p_costos1
|
|
DISPLAY arr_prtb08[curr].precio TO s_pedido[scr_l].precio
|
|
END IF
|
|
|
|
AFTER FIELD terminacion
|
|
IF arr_prtb08[curr].terminacion IS NOT NULL THEN
|
|
IF arr_prtb08[curr].terminacion <> "R" AND
|
|
arr_prtb08[curr].terminacion <> "P" THEN
|
|
NEXT FIELD terminacion
|
|
END IF
|
|
END IF
|
|
|
|
DISPLAY arr_prtb08[curr].terminacion TO s_pedido[scr_l].terminacion ATTRIBUTE(BLUE)
|
|
|
|
AFTER FIELD bisel
|
|
{ IF arr_prtb08[curr].bisel IS NOT NULL THEN
|
|
IF arr_prtb08[curr].bisel <> "DBN" AND
|
|
arr_prtb08[curr].bisel <> "SDN" THEN
|
|
NEXT FIELD bisel
|
|
END IF
|
|
END IF }
|
|
|
|
DISPLAY arr_prtb08[curr].bisel TO s_pedido[scr_l].bisel ATTRIBUTE(BLUE)
|
|
|
|
AFTER FIELD cantidad
|
|
IF arr_prtb08[curr].cantidad IS NULL OR
|
|
arr_prtb08[curr].cantidad < 0 THEN
|
|
LET arr_prtb08[curr].descuento = 0
|
|
END IF
|
|
|
|
AFTER FIELD precio
|
|
IF arr_prtb08[curr].precio IS NULL OR
|
|
arr_prtb08[curr].precio < 0 THEN
|
|
LET arr_prtb08[curr].descuento = 0
|
|
END IF
|
|
|
|
BEFORE FIELD descuento
|
|
LET monto_desc = 0
|
|
LET total1 = 0
|
|
|
|
AFTER FIELD descuento
|
|
IF arr_prtb08[curr].descuento IS NULL THEN
|
|
LET arr_prtb08[curr].descuento = 0
|
|
END IF
|
|
|
|
LET monto_desc = (arr_prtb08[curr].precio * arr_prtb08[curr].cantidad) *
|
|
(arr_prtb08[curr].descuento /100)
|
|
|
|
LET total1 = (arr_prtb08[curr].precio * arr_prtb08[curr].cantidad) - monto_desc
|
|
LET arr_prtb08[curr].total_p = total1
|
|
LET p_totales.sub_total = p_totales.sub_total + arr_prtb08[curr].total_p
|
|
|
|
DISPLAY arr_prtb08[curr].total_p TO s_pedido[scr_l].total_p
|
|
DISPLAY BY NAME p_totales.sub_total
|
|
|
|
AFTER ROW
|
|
LET p_totales.sub_total = 0
|
|
FOR idx = 1 TO arr_count()
|
|
IF arr_prtb08[idx].total_p IS NOT NULL THEN
|
|
LET p_totales.sub_total = p_totales.sub_total + arr_prtb08[idx].total_p
|
|
END IF
|
|
END FOR
|
|
|
|
DISPLAY BY NAME p_totales.sub_total
|
|
|
|
AFTER INPUT
|
|
IF INT_FLAG THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET INT_FLAG = FALSE
|
|
RETURN
|
|
END IF
|
|
LET p_totales.sub_total = 0
|
|
FOR idx = 1 TO arr_count()
|
|
IF arr_prtb08[idx].total_p IS NOT NULL THEN
|
|
LET p_totales.sub_total = p_totales.sub_total + arr_prtb08[idx].total_p
|
|
END IF
|
|
END FOR
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
DISPLAY BY NAME p_totales.sub_total
|
|
|
|
INPUT BY NAME prtb08.cantidad_i,prtb08.precio_i,prtb08.cantidad_mo,
|
|
prtb08.precio_mo,prtb08.transporte,prtb08.itbis WITHOUT DEFAULTS
|
|
|
|
AFTER FIELD cantidad_i
|
|
IF prtb08.cantidad_i IS NULL THEN
|
|
LET prtb08.cantidad_i = 0
|
|
END IF
|
|
|
|
AFTER FIELD precio_i
|
|
IF prtb08.precio_i IS NULL THEN
|
|
LET prtb08.precio_i = 0
|
|
END IF
|
|
LET total_i = (prtb08.cantidad_i * prtb08.precio_i)
|
|
|
|
AFTER FIELD cantidad_mo
|
|
IF prtb08.cantidad_mo IS NULL THEN
|
|
LET prtb08.cantidad_mo = 0
|
|
END IF
|
|
|
|
AFTER FIELD precio_mo
|
|
IF prtb08.precio_mo IS NULL THEN
|
|
LET prtb08.precio_mo = 0
|
|
END IF
|
|
LET total_mo = (prtb08.cantidad_mo * prtb08.precio_mo)
|
|
|
|
AFTER FIELD transporte
|
|
LET sub_total = (total_i + total_mo)+ p_totales.sub_total
|
|
LET sub_total1 = sub_total + prtb08.transporte
|
|
|
|
#-> Bsuca el itbis disponible para la fecha actual vg
|
|
IF prtb08.tipo_cliente <> 13 THEN
|
|
SELECT i.itbi/100 INTO f_itbis FROM vetb00019 i
|
|
WHERE i.disponible = "S"
|
|
|
|
LET prtb08.itbis = (sub_total1 * f_itbis)
|
|
ELSE
|
|
LET prtb08.itbis = 0
|
|
END IF
|
|
|
|
DISPLAY BY NAME prtb08.itbis
|
|
|
|
LET p_totales.total_v = sub_total1 + prtb08.itbis
|
|
DISPLAY BY NAME p_totales.total_v
|
|
|
|
AFTER INPUT
|
|
IF INT_FLAG THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET INT_FLAG = FALSE
|
|
RETURN
|
|
END IF
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
PROMPT "TODA LA INFORMACION ESTA CORRECTA? " FOR opt4
|
|
LET opt4 = upshift(opt4)
|
|
IF opt4 = "S" THEN
|
|
SELECT MAX(num_oc) INTO ult_numero FROM prtb00012
|
|
|
|
IF ult_numero IS NULL THEN
|
|
LET ult_numero = 0
|
|
END IF
|
|
LET ult_numero = ult_numero + 1
|
|
LET prtb08.num_oc = ult_numero
|
|
DISPLAY BY NAME prtb08.num_oc SLEEP 2
|
|
|
|
START REPORT o_pedido TO "c:\\ordenp"
|
|
|
|
#->LET prtb08.nombre_file = prtb08.nombre_file CLIPPED, ".BMP"
|
|
LET prtb08.fecha_cierre = NULL
|
|
#-> Actualiza archivo para el monitoreo de las ordenes vg Wednesday, 14 February, 2001
|
|
LET prtb09.num_oc = prtb08.num_oc
|
|
LET prtb09.fecha = prtb08.fecha_oc
|
|
LET prtb09.pendiente = "S"
|
|
LET prtb09.detalle = "SE GENERO LA ORDEN DE PEDIDO"
|
|
LET prtb09.status_t = NULL
|
|
|
|
INSERT INTO prtb00012 VALUES (prtb08.*)
|
|
INSERT INTO prtb00009 VALUES (prtb09.*)
|
|
|
|
UPDATE prtb00012 SET us_crea = USER,
|
|
fech_crea = CURRENT
|
|
WHERE @num_oc = prtb08.num_oc
|
|
|
|
UPDATE prtb00009 SET us_crea = USER,
|
|
fech_crea = CURRENT
|
|
WHERE @num_oc = prtb09.num_oc
|
|
|
|
|
|
# SE ESTA VALIDANDO EL PRODUCTO TERMINADO EN EL CODIGO DE LA MATERIA PRIMA
|
|
# PARA CUANDO LA ORDEN SEA PARA PRODUCTOS IMPORTADOS QUE NO TIENEN COMPOSICION
|
|
|
|
FOR idx = 1 TO arr_count()
|
|
IF arr_prtb08[idx].total_p IS NOT NULL THEN
|
|
INSERT INTO prtb00013 VALUES (prtb08.num_oc,
|
|
arr_prtb08[idx].cod_n,
|
|
arr_prtb08[idx].cod_grupo,
|
|
arr_prtb08[idx].cod_tipo,
|
|
arr_prtb08[idx].cod_sec,
|
|
arr_prtb08[idx].altura_zocalo,
|
|
arr_prtb08[idx].terminacion,
|
|
arr_prtb08[idx].bisel,
|
|
arr_prtb08[idx].precio,
|
|
arr_prtb08[idx].cantidad,
|
|
arr_prtb08[idx].descuento,
|
|
null,user,current,null,null)
|
|
OUTPUT TO REPORT o_pedido(prtb08.num_oc,arr_prtb08[idx].*)
|
|
END IF
|
|
END FOR
|
|
|
|
FINISH REPORT o_pedido
|
|
RUN "TYPE c:\\ordenp > LPT4"
|
|
RUN "TYPE c:\\ordenp > LPT5"
|
|
|
|
LET numero_msg = 1
|
|
CALL msg(numero_msg)
|
|
|
|
ELSE
|
|
|
|
GOTO vuelve
|
|
END IF
|
|
CLEAR FORM
|
|
END FUNCTION
|
|
|
|
FUNCTION prpcmf008()
|
|
## Aqui se prepara para la captura del criterio de seleccion
|
|
|
|
CONSTRUCT BY NAME criterio ON a.num_oc
|
|
|
|
IF INT_FLAG THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET INT_FLAG = FALSE
|
|
RETURN
|
|
END IF
|
|
|
|
LET SELEC = " SELECT UNIQUE a.* FROM prtb00012 a ",
|
|
" WHERE ",criterio CLIPPED, " AND a.status_t IS NULL "
|
|
|
|
PREPARE busca FROM selec
|
|
DECLARE datos SCROLL CURSOR FOR busca
|
|
OPEN datos
|
|
|
|
FETCH FIRST datos INTO prtb08.*
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
|
|
SELECT SUM(a.valor) INTO balance
|
|
FROM cctb00001 a
|
|
WHERE a.tipo_cliente = prtb08.tipo_cliente
|
|
AND a.sec_cliente = prtb08.sec_cliente
|
|
AND a.status_t IS NULL
|
|
|
|
IF balance IS NULL THEN
|
|
LET balance = 0
|
|
END IF
|
|
|
|
SELECT a.telefono, a.fax INTO prtb08.telefono, prtb08.fax
|
|
FROM vetb00004 a
|
|
WHERE a.tipo_cliente = prtb08.tipo_cliente
|
|
AND a.sec_cliente = prtb08.sec_cliente
|
|
|
|
SELECT b.calle,b.casa_num,b.barrio,b.urbanizacion
|
|
INTO fcalle,fcasa_num,fbarrio,furbanizacion
|
|
FROM vetb00005 b
|
|
WHERE b.tipo_cliente = prtb08.tipo_cliente
|
|
AND b.sec_cliente = prtb08.sec_cliente
|
|
|
|
LET prtb08.direccion = fcalle CLIPPED,",",fcasa_num CLIPPED,",",
|
|
fbarrio CLIPPED,",",furbanizacion CLIPPED
|
|
|
|
DISPLAY BY NAME prtb08.num_oc,prtb08.fecha_oc,prtb08.tipo_cliente,
|
|
prtb08.sec_cliente,prtb08.direccion,prtb08.telefono,
|
|
prtb08.fax,prtb08.fecha_entrega,prtb08.cond_pago,
|
|
balance,prtb08.cantidad_i,prtb08.precio_i,prtb08.cantidad_mo,
|
|
prtb08.precio_mo,prtb08.transporte,prtb08.itbis,prtb08.sec_vend ATTRIBUTE(BLUE)
|
|
|
|
CALL busca_cliente8m()
|
|
CALL busca_vendm8()
|
|
#CALL limpia8()
|
|
CALL busca_detalle8()
|
|
LET sub_total1 = sub_total + (prtb08.cantidad_i * prtb08.precio_i) + (prtb08.cantidad_mo * prtb08.precio_mo) +
|
|
prtb08.transporte
|
|
LET p_totales.total_v = sub_total1 + prtb08.itbis
|
|
DISPLAY BY NAME p_totales.total_v
|
|
|
|
MENU "OPCIONES "
|
|
COMMAND "Siguiente"
|
|
"Presenta en pantalla el proprtb08.mo registro encontrado"
|
|
FETCH NEXT datos INTO prtb08.*
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 4
|
|
CALL msg(numero_msg)
|
|
NEXT OPTION "anterior"
|
|
END IF
|
|
|
|
SELECT SUM(a.valor) INTO balance
|
|
FROM cctb00001 a
|
|
WHERE a.tipo_cliente = prtb08.tipo_cliente
|
|
AND a.sec_cliente = prtb08.sec_cliente
|
|
AND a.status_t IS NULL
|
|
|
|
IF balance IS NULL THEN
|
|
LET balance = 0
|
|
END IF
|
|
|
|
SELECT a.telefono, a.fax INTO prtb08.telefono, prtb08.fax
|
|
FROM vetb00004 a
|
|
WHERE a.tipo_cliente = prtb08.tipo_cliente
|
|
AND a.sec_cliente = prtb08.sec_cliente
|
|
|
|
SELECT b.calle,b.casa_num,b.barrio,b.urbanizacion
|
|
INTO fcalle,fcasa_num,fbarrio,furbanizacion
|
|
FROM vetb00005 b
|
|
WHERE b.tipo_cliente = prtb08.tipo_cliente
|
|
AND b.sec_cliente = prtb08.sec_cliente
|
|
|
|
LET prtb08.direccion = fcalle CLIPPED,",",fcasa_num CLIPPED,",",
|
|
fbarrio CLIPPED,",",furbanizacion CLIPPED
|
|
|
|
DISPLAY BY NAME prtb08.num_oc,prtb08.fecha_oc,prtb08.tipo_cliente,
|
|
prtb08.sec_cliente,prtb08.direccion,prtb08.telefono,
|
|
prtb08.fax,prtb08.fecha_entrega,prtb08.cond_pago,
|
|
balance,prtb08.cantidad_i,prtb08.precio_i,prtb08.cantidad_mo,
|
|
prtb08.precio_mo,prtb08.transporte,prtb08.itbis,prtb08.sec_vend ATTRIBUTE(BLUE)
|
|
CALL busca_cliente8m()
|
|
CALL busca_vendm8()
|
|
#CALL limpia8()
|
|
CALL busca_detalle8()
|
|
LET sub_total1 = sub_total + (prtb08.cantidad_i * prtb08.precio_i) + (prtb08.cantidad_mo * prtb08.precio_mo) +
|
|
prtb08.transporte
|
|
LET p_totales.total_v = sub_total1 + prtb08.itbis
|
|
DISPLAY BY NAME p_totales.total_v
|
|
|
|
COMMAND "Anterior"
|
|
"Presenta en pantalla el registro anterior encontrado"
|
|
FETCH PREVIOUS datos INTO prtb08.*
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 5
|
|
CALL msg(numero_msg)
|
|
NEXT OPTION "siguiente"
|
|
END IF
|
|
|
|
SELECT SUM(a.valor) INTO balance
|
|
FROM cctb00001 a
|
|
WHERE a.tipo_cliente = prtb08.tipo_cliente
|
|
AND a.sec_cliente = prtb08.sec_cliente
|
|
AND a.status_t IS NULL
|
|
|
|
IF balance IS NULL THEN
|
|
LET balance = 0
|
|
END IF
|
|
|
|
SELECT a.telefono, a.fax INTO prtb08.telefono, prtb08.fax
|
|
FROM vetb00004 a
|
|
WHERE a.tipo_cliente = prtb08.tipo_cliente
|
|
AND a.sec_cliente = prtb08.sec_cliente
|
|
|
|
SELECT b.calle,b.casa_num,b.barrio,b.urbanizacion
|
|
INTO fcalle,fcasa_num,fbarrio,furbanizacion
|
|
FROM vetb00005 b
|
|
WHERE b.tipo_cliente = prtb08.tipo_cliente
|
|
AND b.sec_cliente = prtb08.sec_cliente
|
|
|
|
LET prtb08.direccion = fcalle CLIPPED,",",fcasa_num CLIPPED,",",
|
|
fbarrio CLIPPED,",",furbanizacion CLIPPED
|
|
|
|
DISPLAY BY NAME prtb08.num_oc,prtb08.fecha_oc,prtb08.tipo_cliente,
|
|
prtb08.sec_cliente,prtb08.direccion,prtb08.telefono,
|
|
prtb08.fax,prtb08.fecha_entrega,prtb08.cond_pago,
|
|
balance,prtb08.cantidad_i,prtb08.precio_i,prtb08.cantidad_mo,
|
|
prtb08.precio_mo,prtb08.transporte,prtb08.itbis,prtb08.sec_vend ATTRIBUTE(BLUE)
|
|
|
|
CALL busca_cliente8m()
|
|
CALL busca_vendm8()
|
|
#CALL limpia8()
|
|
CALL busca_detalle8()
|
|
LET sub_total1 = sub_total + (prtb08.cantidad_i * prtb08.precio_i) + (prtb08.cantidad_mo * prtb08.precio_mo) +
|
|
prtb08.transporte
|
|
LET p_totales.total_v = sub_total1 + prtb08.itbis
|
|
DISPLAY BY NAME p_totales.total_v
|
|
|
|
COMMAND "Primero"
|
|
"Presenta en pantalla el primer registro encontrado"
|
|
FETCH FIRST datos INTO prtb08.*
|
|
|
|
SELECT SUM(a.valor) INTO balance
|
|
FROM cctb00001 a
|
|
WHERE a.tipo_cliente = prtb08.tipo_cliente
|
|
AND a.sec_cliente = prtb08.sec_cliente
|
|
AND a.status_t IS NULL
|
|
|
|
IF balance IS NULL THEN
|
|
LET balance = 0
|
|
END IF
|
|
|
|
SELECT a.telefono, a.fax INTO prtb08.telefono, prtb08.fax
|
|
FROM vetb00004 a
|
|
WHERE a.tipo_cliente = prtb08.tipo_cliente
|
|
AND a.sec_cliente = prtb08.sec_cliente
|
|
|
|
SELECT b.calle,b.casa_num,b.barrio,b.urbanizacion
|
|
INTO fcalle,fcasa_num,fbarrio,furbanizacion
|
|
FROM vetb00005 b
|
|
WHERE b.tipo_cliente = prtb08.tipo_cliente
|
|
AND b.sec_cliente = prtb08.sec_cliente
|
|
|
|
LET prtb08.direccion = fcalle CLIPPED,",",fcasa_num CLIPPED,",",
|
|
fbarrio CLIPPED,",",furbanizacion CLIPPED
|
|
|
|
DISPLAY BY NAME prtb08.num_oc,prtb08.fecha_oc,prtb08.tipo_cliente,
|
|
prtb08.sec_cliente,prtb08.direccion,prtb08.telefono,
|
|
prtb08.fax,prtb08.fecha_entrega,prtb08.cond_pago,
|
|
balance,prtb08.cantidad_i,prtb08.precio_i,prtb08.cantidad_mo,
|
|
prtb08.precio_mo,prtb08.transporte,prtb08.itbis,prtb08.sec_vend ATTRIBUTE(BLUE)
|
|
|
|
CALL busca_cliente8m()
|
|
CALL busca_vendm8()
|
|
#CALL limpia8()
|
|
CALL busca_detalle8()
|
|
|
|
LET sub_total1 = sub_total + (prtb08.cantidad_i * prtb08.precio_i) + (prtb08.cantidad_mo * prtb08.precio_mo) +
|
|
prtb08.transporte
|
|
LET p_totales.total_v = sub_total1 + prtb08.itbis
|
|
DISPLAY BY NAME p_totales.total_v
|
|
|
|
NEXT OPTION "primero"
|
|
COMMAND "Ultimo"
|
|
"Presenta en pantalla el ultimo registro encontrado"
|
|
FETCH LAST datos INTO prtb08.*
|
|
|
|
SELECT SUM(a.valor) INTO balance
|
|
FROM cctb00001 a
|
|
WHERE a.tipo_cliente = prtb08.tipo_cliente
|
|
AND a.sec_cliente = prtb08.sec_cliente
|
|
AND a.status_t IS NULL
|
|
|
|
IF balance IS NULL THEN
|
|
LET balance = 0
|
|
END IF
|
|
|
|
SELECT a.telefono, a.fax INTO prtb08.telefono, prtb08.fax
|
|
FROM vetb00004 a
|
|
WHERE a.tipo_cliente = prtb08.tipo_cliente
|
|
AND a.sec_cliente = prtb08.sec_cliente
|
|
|
|
SELECT b.calle,b.casa_num,b.barrio,b.urbanizacion
|
|
INTO fcalle,fcasa_num,fbarrio,furbanizacion
|
|
FROM vetb00005 b
|
|
WHERE b.tipo_cliente = prtb08.tipo_cliente
|
|
AND b.sec_cliente = prtb08.sec_cliente
|
|
|
|
LET prtb08.direccion = fcalle CLIPPED,",",fcasa_num CLIPPED,",",
|
|
fbarrio CLIPPED,",",furbanizacion CLIPPED
|
|
|
|
DISPLAY BY NAME prtb08.num_oc,prtb08.fecha_oc,prtb08.tipo_cliente,
|
|
prtb08.sec_cliente,prtb08.direccion,prtb08.telefono,
|
|
prtb08.fax,prtb08.fecha_entrega,prtb08.cond_pago,
|
|
balance,prtb08.cantidad_i,prtb08.precio_i,prtb08.cantidad_mo,
|
|
prtb08.precio_mo,prtb08.transporte,prtb08.itbis,prtb08.sec_vend ATTRIBUTE(BLUE)
|
|
|
|
CALL busca_cliente8m()
|
|
CALL busca_vendm8()
|
|
#CALL limpia8()
|
|
CALL busca_detalle8()
|
|
|
|
NEXT OPTION "anterior"
|
|
COMMAND KEY ("N") "aNular"
|
|
PROMPT "Esta seguro?" FOR esta
|
|
LET esta = UPSHIFT(esta)
|
|
IF esta = "S" THEN
|
|
LET prtb09.num_oc = prtb08.num_oc
|
|
LET prtb09.fecha = prtb08.fecha_oc
|
|
LET prtb09.pendiente = "S"
|
|
LET prtb09.detalle = "SE CANCELO LA ORDEN DE PEDIDO"
|
|
LET prtb09.status_t = "E"
|
|
|
|
INSERT INTO prtb00009 VALUES (prtb09.*)
|
|
|
|
UPDATE prtb00012 set status_t = "E",
|
|
us_mod = user,
|
|
fech_mod = current
|
|
WHERE num_oc = prtb08.num_oc
|
|
|
|
UPDATE prtb00009 SET us_crea = user,
|
|
fech_crea = current
|
|
WHERE num_oc = prtb08.num_oc
|
|
AND us_crea IS NULL
|
|
|
|
LET numero_msg = 39
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
|
|
COMMAND "Retornar"
|
|
"Retorna al menu anterior"
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
|
|
FUNCTION limpia8()
|
|
|
|
FOR idx = 1 TO 10
|
|
LET arr_prtb08[idx].fila = NULL
|
|
LET arr_prtb08[idx].cod_n = NULL
|
|
LET arr_prtb08[idx].cod_grupo = NULL
|
|
LET arr_prtb08[idx].cod_tipo = NULL
|
|
LET arr_prtb08[idx].cod_sec = NULL
|
|
LET arr_prtb08[idx].bisel = NULL
|
|
LET arr_prtb08[idx].cantidad = NULL
|
|
LET arr_prtb08[idx].precio = NULL
|
|
LET arr_prtb08[idx].descuento = NULL
|
|
LET arr_prtb08[idx].total_p = NULL
|
|
END FOR
|
|
|
|
FOR idx = 1 TO 10
|
|
DISPLAY arr_prtb08[idx].fila TO s_pedido[idx].fila
|
|
DISPLAY arr_prtb08[idx].cod_n TO s_pedido[idx].cod_n
|
|
DISPLAY arr_prtb08[idx].cod_grupo TO s_pedido[idx].cod_grupo
|
|
DISPLAY arr_prtb08[idx].cod_tipo TO s_pedido[idx].cod_tipo
|
|
DISPLAY arr_prtb08[idx].cod_sec TO s_pedido[idx].cod_sec
|
|
DISPLAY arr_prtb08[idx].bisel TO s_pedido[idx].bisel
|
|
|
|
DISPLAY arr_prtb08[idx].cantidad TO s_pedido[idx].cantidad
|
|
DISPLAY arr_prtb08[idx].precio TO s_pedido[idx].precio
|
|
DISPLAY arr_prtb08[idx].descuento TO s_pedido[idx].descuento
|
|
DISPLAY arr_prtb08[idx].total_p TO s_pedido[idx].total_p
|
|
END FOR
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION busca_detalle8()
|
|
|
|
DECLARE busca_d CURSOR FOR
|
|
SELECT 1,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec," ",a.terminacion,
|
|
a.bisel,a.cantidad,a.precio,a.descuento
|
|
FROM prtb00013 a
|
|
WHERE a.num_oc = prtb08.num_oc
|
|
|
|
LET idx = 1
|
|
LET p_totales.sub_total = 0
|
|
LET p_totales.total_v = 0
|
|
FOREACH busca_d INTO arr_prtb08[idx].*
|
|
IF arr_prtb08[idx].cod_n IS NOT NULL THEN
|
|
SELECT a.descrip_esp,a.unidad_med INTO descrip_esp,p_totales.unidad_med
|
|
FROM iptb00002 a
|
|
WHERE a.cod_n = arr_prtb08[idx].cod_n AND
|
|
a.cod_grupo = arr_prtb08[idx].cod_grupo AND
|
|
a.cod_tipo = arr_prtb08[idx].cod_tipo AND
|
|
a.cod_sec = arr_prtb08[idx].cod_sec AND
|
|
a.status_t IS NULL
|
|
|
|
LET monto_desc = 0
|
|
LET total1 = 0
|
|
|
|
LET monto_desc = (arr_prtb08[idx].precio * arr_prtb08[idx].cantidad) * (arr_prtb08[idx].descuento /100)
|
|
LET total1 = (arr_prtb08[idx].precio * arr_prtb08[idx].cantidad) - monto_desc
|
|
LET arr_prtb08[idx].total_p = total1
|
|
LET arr_prtb08[idx].fila = idx
|
|
LET p_totales.sub_total = p_totales.sub_total + arr_prtb08[idx].total_p
|
|
LET idx = idx + 1
|
|
END IF
|
|
END FOREACH
|
|
|
|
LET total_i = (prtb08.cantidad_i * prtb08.precio_i)
|
|
LET total_mo = (prtb08.cantidad_mo * prtb08.precio_mo)
|
|
LET sub_total = (total_i + total_mo)+ p_totales.sub_total
|
|
LET sub_total1 = sub_total + prtb08.transporte
|
|
LET p_totales.total_v = sub_total1 + prtb08.itbis
|
|
|
|
DISPLAY ARRAY arr_prtb08 TO s_pedido.*
|
|
LET idx = arr_curr()
|
|
LET scr_l = scr_line()
|
|
|
|
DISPLAY arr_prtb08[idx].fila TO s_pedido[scr_l].fila ATTRIBUTE(BLUE)
|
|
DISPLAY arr_prtb08[idx].cod_n TO s_pedido[scr_l].cod_n
|
|
DISPLAY arr_prtb08[idx].cod_grupo TO s_pedido[scr_l].cod_grupo
|
|
DISPLAY arr_prtb08[idx].cod_tipo TO s_pedido[scr_l].cod_tipo
|
|
DISPLAY arr_prtb08[idx].cod_sec TO s_pedido[scr_l].cod_sec
|
|
DISPLAY BY NAME descrip_esp ATTRIBUTE(BLUE)
|
|
DISPLAY arr_prtb08[idx].terminacion TO s_pedido[scr_l].terminacion ATTRIBUTE(BLUE)
|
|
DISPLAY arr_prtb08[idx].bisel TO s_pedido[scr_l].bisel ATTRIBUTE(BLUE)
|
|
DISPLAY arr_prtb08[idx].cantidad TO s_pedido[scr_l].cantidad
|
|
DISPLAY arr_prtb08[idx].precio TO s_pedido[scr_l].precio ATTRIBUTE(BLUE)
|
|
DISPLAY arr_prtb08[idx].descuento TO s_pedido[scr_l].descuento
|
|
DISPLAY arr_prtb08[idx].total_p TO s_pedido[scr_l].total_p
|
|
LET p_totales.sub_total = p_totales.sub_total + arr_prtb08[idx].total_p
|
|
|
|
DISPLAY BY NAME p_totales.sub_total,p_totales.unidad_med
|
|
|
|
DISPLAY BY NAME prtb08.itbis
|
|
DISPLAY BY NAME p_totales.total_v
|
|
|
|
END FUNCTION
|
|
|
|
REPORT o_pedido(xnumero,z)
|
|
DEFINE z RECORD
|
|
fila SMALLINT,
|
|
cod_n LIKE prtb00013.cod_n,
|
|
cod_grupo LIKE prtb00013.cod_grupo,
|
|
cod_tipo LIKE prtb00013.cod_tipo,
|
|
cod_sec LIKE prtb00013.cod_sec,
|
|
altura_zocalo LIKE prtb00013.altura_zocalo,
|
|
terminacion LIKE prtb00013.terminacion,
|
|
bisel LIKE prtb00013.bisel,
|
|
cantidad LIKE prtb00013.cantidad,
|
|
precio LIKE prtb00013.precio,
|
|
descuento LIKE prtb00013.descuento,
|
|
total_p DECIMAL(10,2)
|
|
END RECORD,
|
|
i,xnumero INTEGER,
|
|
normal,comp_on,comp_off,doce,negrillas_on,negrillas_off,
|
|
doble_on,doble_off CHAR(2),raya CHAR(100),rayita CHAR(35),
|
|
total_inst,subtotal DEC(8,2)
|
|
|
|
OUTPUT
|
|
LEFT MARGIN 0
|
|
|
|
ORDER BY xnumero
|
|
FORMAT
|
|
PAGE HEADER
|
|
LET normal = ASCII 27, ASCII 80
|
|
LET comp_on = ASCII 15
|
|
LET comp_off = ASCII 18
|
|
LET doce = ASCII 27, ascii 77
|
|
LET negrillas_on = ASCII 27, ASCII 69
|
|
LET negrillas_off = ASCII 27, ASCII 70
|
|
LET doble_on = ASCII 14
|
|
LET doble_off = ASCII 20
|
|
|
|
LET l = (90 - LENGTH(p_compania.nombre CLIPPED))/2
|
|
PRINT COLUMN l, p_compania.nombre CLIPPED,
|
|
COLUMN 72, TODAY USING "DD/MM/YYYY"
|
|
LET l = (90 - LENGTH("Ordenes de Pedido Corte a la Medida"))/2
|
|
PRINT COLUMN l, "ORDENES DE PEDIDOS CORTE A LA MEDIDA",
|
|
COLUMN 72, TIME
|
|
|
|
PRINT COLUMN 001, "ORDEN NO.: ",doble_on,xnumero USING "<<<<<<",doble_off
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 001, "Fecha de la Orden : ",prtb08.fecha_oc USING "DD/MMM/YYYY",
|
|
COLUMN 052, "Fecha de Entrega : ",prtb08.fecha_entrega USING "DD/MM/YYYY"
|
|
|
|
PRINT COLUMN 001, "CLIENTE : ",nombre CLIPPED,
|
|
COLUMN 052, "PAGO : "
|
|
PRINT COLUMN 001, "CODIGO CLIENTE : ",prtb08.tipo_cliente USING "<<","-",
|
|
prtb08.sec_cliente USING "<<<<"
|
|
PRINT COLUMN 001, "Direccion : ",prtb08.direccion CLIPPED,
|
|
COLUMN 062, "Recibo No. : "
|
|
PRINT COLUMN 001, "Telefono : ",prtb08.telefono CLIPPED,
|
|
COLUMN 052, "Fax : ",prtb08.fax CLIPPED
|
|
PRINT COLUMN 001, "Condiciones : ", descrip_p CLIPPED,
|
|
COLUMN 042, "Vendedor : ", prtb08.sec_vend USING "<<<<"," ",
|
|
nombres CLIPPED," ",apellidos CLIPPED
|
|
PRINT COLUMN 001, prtb08.ubicacion CLIPPED
|
|
|
|
|
|
FOR i = 1 TO 99
|
|
LET raya[i] = "-"
|
|
END FOR
|
|
FOR i = 1 TO 35
|
|
LET rayita[i] = "-"
|
|
END FOR
|
|
|
|
PRINT doce
|
|
PRINT raya
|
|
PRINT COLUMN 033, "|ALTURA",
|
|
COLUMN 040, "|TERMINACION"
|
|
|
|
PRINT COLUMN 001, " CODIGO ",
|
|
COLUMN 012, "|DESCRIPCION",
|
|
COLUMN 033, "|ZOCALO|",
|
|
# COLUMN 047, "|TERMINACION",
|
|
COLUMN 048, "|BISEL",
|
|
COLUMN 055, "|UNID.",
|
|
COLUMN 062, "|CANTIDAD",
|
|
COLUMN 072, "|PRECIO",
|
|
COLUMN 082, "|DESC.",
|
|
COLUMN 090, "|TOTAL "
|
|
PRINT raya
|
|
|
|
ON EVERY ROW
|
|
SELECT a.descrip_esp,a.unidad_med INTO descrip_esp,p_totales.unidad_med
|
|
FROM iptb00002 a
|
|
WHERE a.cod_n = z.cod_n AND
|
|
a.cod_grupo = z.cod_grupo AND
|
|
a.cod_tipo = z.cod_tipo AND
|
|
a.cod_sec = z.cod_sec
|
|
|
|
PRINT COLUMN 001, z.cod_n USING "&","-",z.cod_grupo USING "&","-",
|
|
z.cod_tipo USING "&&","-",z.cod_sec USING "&&&",
|
|
COLUMN 012, descrip_esp wordwrap right margin 30,
|
|
COLUMN 036, z.altura_zocalo USING "&.&&",
|
|
COLUMN 046, z.terminacion,
|
|
COLUMN 050, z.bisel CLIPPED,
|
|
COLUMN 057, p_totales.unidad_med clipped,
|
|
COLUMN 063, z.cantidad USING "#,###.#&",
|
|
COLUMN 073, z.precio USING "#,###.#&",
|
|
COLUMN 084, z.descuento USING "##.&&",
|
|
COLUMN 090, z.total_p USING "###,###.&&"
|
|
ON LAST ROW
|
|
PRINT raya
|
|
|
|
PRINT COLUMN 060, "Total Material",
|
|
COLUMN 088, p_totales.sub_total USING "#,###,###.&&"
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 075, "INSTALACION"
|
|
|
|
PRINT COLUMN 065, rayita
|
|
|
|
PRINT COLUMN 065,"|"," Cantidad |",
|
|
COLUMN 075, " Precio |",
|
|
COLUMN 085," Total "
|
|
#-> PRINT COLUMN 060, rayita
|
|
|
|
PRINT COLUMN 045, "Instalacion Tope",
|
|
COLUMN 068, prtb08.cantidad_i USING "####.#&",
|
|
COLUMN 078, prtb08.precio_i USING "#,###.#&",
|
|
COLUMN 088,(prtb08.cantidad_i * prtb08.precio_i) USING "#,###,###.#&"
|
|
#-> PRINT COLUMN 060, rayita
|
|
|
|
PRINT COLUMN 045, "Mano de Obra",
|
|
COLUMN 068, prtb08.cantidad_mo USING "####.#&",
|
|
COLUMN 078, prtb08.precio_mo USING "#,###.#&",
|
|
COLUMN 088,(prtb08.cantidad_mo * prtb08.precio_mo) USING "#,###,###.#&"
|
|
PRINT COLUMN 065, rayita
|
|
|
|
LET total_inst = (prtb08.cantidad_i * prtb08.precio_i) +
|
|
(prtb08.cantidad_mo * prtb08.precio_mo)
|
|
|
|
PRINT COLUMN 065, "Total Instalacion",
|
|
COLUMN 088, total_inst USING "#,###,###.#&"
|
|
|
|
PRINT COLUMN 060, "Transporte",
|
|
COLUMN 088, prtb08.transporte USING "#,###,###.#&"
|
|
PRINT COLUMN 060, "Sub-Total",
|
|
COLUMN 088, p_totales.sub_total + total_inst USING "#,###,###.#&"
|
|
PRINT COLUMN 060, "Itbis",
|
|
COLUMN 088, prtb08.itbis USING "#,###,###.#&"
|
|
PRINT COLUMN 060, "Total Ventas",
|
|
COLUMN 088, p_totales.total_v USING "#,###,###.#&"
|
|
PRINT normal
|
|
|
|
PAGE TRAILER
|
|
PRINT COLUMN 10, "-------------------",
|
|
COLUMN 35, "-------------------",
|
|
COLUMN 57, "-------------------"
|
|
|
|
PRINT COLUMN 13, "VENDEDOR",
|
|
COLUMN 39, "CLIENTE",
|
|
COLUMN 61, "APROBADO POR"
|
|
END REPORT
|
|
|
|
FUNCTION busca_cliente8()
|
|
OPEN WINDOW busqueda AT 7,12 WITH FORM "vefmwd002"
|
|
ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST)
|
|
|
|
LET INT_FLAG = false
|
|
CONSTRUCT criterio ON a.nombre FROM nombre
|
|
|
|
LET selec2 = "SELECT a.tipo_cliente, a.sec_cliente, a.nombre ",
|
|
" FROM vetb00004 a",
|
|
" WHERE ",
|
|
"a.status_t is NULL AND ",
|
|
criterio clipped,
|
|
"ORDER BY 1,2 "
|
|
|
|
IF INT_FLAG THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
GO TO salir_consulta_c
|
|
END IF
|
|
|
|
PREPARE busca_cliente8s FROM selec2
|
|
IF status >= 0 THEN
|
|
IF status = notfound THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
ELSE
|
|
CALL integridad()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
END IF
|
|
END IF
|
|
|
|
DECLARE buscar_clientes CURSOR FOR busca_cliente8s
|
|
LET idx = 1
|
|
|
|
FOREACH buscar_clientes INTO arr_clientes[idx].*
|
|
IF status = NOTFOUND THEN
|
|
EXIT FOREACH
|
|
END IF
|
|
|
|
IF INT_FLAG THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
EXIT FOREACH
|
|
END IF
|
|
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
|
|
CALL set_count(idx-1)
|
|
MESSAGE " <Esc> Selecciona Cliente donde esta el cursor"
|
|
DISPLAY ARRAY arr_clientes TO s_clientes.*
|
|
LET curr1 = arr_curr()
|
|
|
|
LET prtb08.tipo_cliente = arr_clientes[curr1].tipo_cliente
|
|
LET prtb08.sec_cliente = arr_clientes[curr1].sec_cliente
|
|
LET nombre = arr_clientes[curr1].nombre
|
|
|
|
LABEL salir_consulta_c:
|
|
CLOSE WINDOW busqueda
|
|
END FUNCTION
|
|
FUNCTION busca_cliente8m()
|
|
SELECT a.nombre INTO nombre
|
|
FROM vetb00004 a
|
|
WHERE a.tipo_cliente = prtb08.tipo_cliente AND
|
|
a.sec_cliente = prtb08.sec_cliente AND
|
|
a.status_t IS NULL
|
|
|
|
SELECT a.descrip INTO descrip_p
|
|
FROM vetb00012 a
|
|
WHERE a.cond_pago = prtb08.cond_pago AND
|
|
a.status_t IS NULL
|
|
|
|
DISPLAY BY NAME nombre,descrip_p ATTRIBUTE(BLUE)
|
|
END FUNCTION
|
|
FUNCTION busca_product8()
|
|
SELECT a.descrip_esp,a.unidad_med INTO descrip_esp,unidad
|
|
FROM iptb00002 a
|
|
WHERE a.cod_n = prtb08.cod_n AND
|
|
a.cod_grupo = prtb08.cod_grupo AND
|
|
a.cod_tipo = prtb08.cod_tipo AND
|
|
a.cod_sec = prtb08.cod_sec
|
|
|
|
DISPLAY BY NAME unidad,descrip_esp ATTRIBUTE(BLUE)
|
|
END FUNCTION
|
|
|
|
FUNCTION vendedor8es()
|
|
DEFINE descrip6 LIKE adtb00003.nom1_emp
|
|
|
|
OPEN WINDOW busqueda2 AT 7,12 WITH FORM "vefmwd001"
|
|
ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST)
|
|
|
|
LET INT_FLAG = false
|
|
CONSTRUCT criterio ON a.nom1_emp FROM descrip6
|
|
|
|
LET selec2 = "SELECT UNIQUE a.num_emp,a.nom1_emp,a.apell1_emp ",
|
|
" FROM adtb00003 a,vetb00028 b",
|
|
" WHERE a.num_emp = b.sec_vend AND ",
|
|
"a.status_t is NULL AND ",
|
|
criterio clipped,
|
|
"ORDER BY 1 "
|
|
|
|
IF INT_FLAG THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
GO TO salir_consulta_e
|
|
END IF
|
|
|
|
PREPARE busca_empleados FROM selec2
|
|
IF status >= 0 THEN
|
|
IF status = notfound THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
ELSE
|
|
CALL integridad()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
END IF
|
|
END IF
|
|
|
|
DECLARE buscar_empleados CURSOR FOR busca_empleados
|
|
LET idx = 1
|
|
|
|
FOREACH buscar_empleados INTO arr_empleados[idx].*
|
|
IF status = NOTFOUND THEN
|
|
EXIT FOREACH
|
|
END IF
|
|
|
|
IF INT_FLAG THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
EXIT FOREACH
|
|
END IF
|
|
|
|
LET empleados[idx].cod_emp_sec = arr_empleados[idx].num_emp
|
|
LET empleados[idx].descrip6 =
|
|
arr_empleados[idx].nom1_emp clipped," ",arr_empleados[idx].apell1_emp clipped
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
|
|
CALL set_count(idx-1)
|
|
MESSAGE " <Esc> Selecciona Empleado donde esta el cursor"
|
|
DISPLAY ARRAY empleados TO s_empleados.*
|
|
LET curr1 = scr_line()
|
|
|
|
LET prtb08.sec_vend = empleados[curr1].cod_emp_sec
|
|
LET nombre_vend = empleados[curr1].descrip6
|
|
LABEL salir_consulta_e:
|
|
CLOSE WINDOW busqueda2
|
|
END FUNCTION
|
|
FUNCTION busca_vendm8()
|
|
IF prtb08.sec_vend IS NOT NULL THEN
|
|
SELECT a.nom1_emp,a.apell1_emp INTO nombres,apellidos
|
|
FROM adtb00003 a
|
|
WHERE a.num_emp = prtb08.sec_vend
|
|
|
|
LET nombre_vend = nombres CLIPPED," ",apellidos CLIPPED
|
|
DISPLAY BY NAME nombre_vend ATTRIBUTE(BLUE)
|
|
END IF
|
|
END FUNCTION
|
|
FUNCTION imprime()
|
|
DEFINE codigo CHAR(7),
|
|
pcodigo CHAR(10)
|
|
|
|
--# CALL fgl_init4js()
|
|
|
|
--# LET archivo = NULL
|
|
--# LET filename = NULL
|
|
--# LET filename = FGL_GETENV("USPROGRAM")
|
|
|
|
--# LET archivo = "G:\\\\orden.xls"
|
|
--# LET sysos = FGL_GETENV("OS")
|
|
|
|
--# IF sysos = "Windows_NT" THEN
|
|
--# LET filename = filename CLIPPED," G:\\\\orden.xls"
|
|
--# ELSE
|
|
--# LET filename = "C:\\\\ARCHIV~1\\\\MICROS~1\\\\OFFICE\\\\EXCEL.EXE G:\\\\orden.xls"
|
|
--# LET localiza = "G:\\"
|
|
--# LET archivo = "G:\\\\orden.xls"
|
|
|
|
--# END IF
|
|
|
|
--# IF winexec(filename) THEN
|
|
|
|
--# IF DDEconnect("EXCEL",archivo) THEN
|
|
|
|
--# LET cels = "R",1 USING "<<","C3"
|
|
--# IF DDEpoke("EXCEL",archivo,cels,prtb08.num_oc) THEN
|
|
--# ELSE
|
|
--# LET numero_msg =391
|
|
--# CALL msg(numero_msg)
|
|
--# END IF
|
|
|
|
--# LET cels = "R",2 USING "<<","C3"
|
|
--# IF DDEpoke("EXCEL",archivo,cels,prtb08.fecha_oc) THEN
|
|
--# ELSE
|
|
--# LET numero_msg =391
|
|
--# CALL msg(numero_msg)
|
|
--# END IF
|
|
|
|
--# LET cels = "R",3 USING "<<","C3"
|
|
--# IF DDEpoke("EXCEL",archivo,cels,nombre) THEN
|
|
--# ELSE
|
|
--# LET numero_msg =391
|
|
--# CALL msg(numero_msg)
|
|
--# END IF
|
|
LET codigo = prtb08.tipo_cliente USING "<<","-",
|
|
prtb08.sec_cliente USING "<<<<"
|
|
|
|
--# LET cels = "R",4 USING "<<","C3"
|
|
--# IF DDEpoke("EXCEL",archivo,cels,codigo) THEN
|
|
--# ELSE
|
|
--# LET numero_msg =391
|
|
--# CALL msg(numero_msg)
|
|
--# END IF
|
|
|
|
--# LET cels = "R",5 USING "<<","C3"
|
|
--# IF DDEpoke("EXCEL",archivo,cels,prtb08.direccion) THEN
|
|
--# ELSE
|
|
--# LET numero_msg =391
|
|
--# CALL msg(numero_msg)
|
|
--# END IF
|
|
|
|
--# LET cels = "R",6 USING "<<","C3"
|
|
--# IF DDEpoke("EXCEL",archivo,cels,prtb08.telefono) THEN
|
|
--# ELSE
|
|
--# LET numero_msg =391
|
|
--# CALL msg(numero_msg)
|
|
--# END IF
|
|
|
|
SELECT a.descrip_esp, a.unidad_med
|
|
INTO descrip_esp,p_totales.unidad_med
|
|
FROM iptb00002 a
|
|
WHERE a.cod_n = arr_prtb08[idx].cod_n AND
|
|
a.cod_tipo = arr_prtb08[idx].cod_tipo AND
|
|
a.cod_grupo = arr_prtb08[idx].cod_grupo AND
|
|
a.cod_sec = arr_prtb08[idx].cod_sec AND
|
|
a.status_t IS NULL
|
|
|
|
--# LET cels = "R",7 USING "<<","C3"
|
|
--# IF DDEpoke("EXCEL",archivo,cels,descrip_p) THEN
|
|
--# ELSE
|
|
--# LET numero_msg =391
|
|
--# CALL msg(numero_msg)
|
|
--# END IF
|
|
|
|
--# LET cels = "R",8 USING "<<","C3"
|
|
--# IF DDEpoke("EXCEL",archivo,cels,prtb08.fecha_entrega) THEN
|
|
--# ELSE
|
|
--# LET numero_msg =391
|
|
--# CALL msg(numero_msg)
|
|
--# END IF
|
|
|
|
--# LET cels = "R",13 USING "<<","C3"
|
|
--# IF DDEpoke("EXCEL",archivo,cels,prtb08.fax) THEN
|
|
--# ELSE
|
|
--# LET numero_msg =391
|
|
--# CALL msg(numero_msg)
|
|
--# END IF
|
|
LET cnt = 16
|
|
FOR idx = 1 TO arr_count()
|
|
IF arr_prtb08[idx].cod_n IS NOT NULL THEN
|
|
--# LET cels = "R",cnt USING "<<<","C1"
|
|
LET pcodigo = arr_prtb08[idx].cod_n USING "&","-",
|
|
arr_prtb08[idx].cod_grupo USING "&","-",
|
|
arr_prtb08[idx].cod_tipo USING "&&","-",
|
|
arr_prtb08[idx].cod_sec USING "&&&"
|
|
|
|
|
|
--# IF DDEpoke("EXCEL",archivo,cels,pcodigo) THEN
|
|
--# ELSE
|
|
--# LET numero_msg =391
|
|
--# CALL msg(numero_msg)
|
|
--# END IF
|
|
|
|
--# LET cels = "R",cnt USING "<<<","C2"
|
|
--# IF DDEpoke("EXCEL",archivo,cels,descrip_esp) THEN
|
|
--# ELSE
|
|
--# LET numero_msg =391
|
|
--# CALL msg(numero_msg)
|
|
--# END IF
|
|
|
|
--# LET cels = "R",cnt USING "<<<","C5"
|
|
--# IF DDEpoke("EXCEL",archivo,cels,arr_prtb08[idx].cantidad) THEN
|
|
--# ELSE
|
|
--# LET numero_msg =391
|
|
--# CALL msg(numero_msg)
|
|
--# END IF
|
|
|
|
--# LET cels = "R",cnt USING "<<<","C6"
|
|
--# IF DDEpoke("EXCEL",archivo,cels,arr_prtb08[idx].bisel) THEN
|
|
--# ELSE
|
|
--# LET numero_msg =391
|
|
--# CALL msg(numero_msg)
|
|
--# END IF
|
|
|
|
--# LET cels = "R",cnt USING "<<<","C8"
|
|
--# IF DDEpoke("EXCEL",archivo,cels,arr_prtb08[idx].precio) THEN
|
|
--# ELSE
|
|
--# LET numero_msg =391
|
|
--# CALL msg(numero_msg)
|
|
--# END IF
|
|
|
|
--# LET cels = "R",cnt USING "<<<","C9"
|
|
--# IF DDEpoke("EXCEL",archivo,cels,arr_prtb08[idx].descuento) THEN
|
|
--# ELSE
|
|
--# LET numero_msg =391
|
|
--# CALL msg(numero_msg)
|
|
--# END IF
|
|
|
|
END IF
|
|
END FOR
|
|
|
|
--# END IF
|
|
--# END IF
|
|
END FUNCTION
|
|
|
|
|