Files
MBS/PROYECTO/PRDIR/prprmt008b.4gl
T

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