Files
MBS/PROYECTO/PRDIR/prprmt008 - copia.4gl
T

3374 lines
131 KiB
Plaintext

{
------------------------------------------------------------------
PROGRAMA : PRPRMT008
OBJETIVO : Ordenes de Pedidos
PROGRAMADOR : Oscar Castillo
FECHA REALIZACION : 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.
MODIFICACION : CONTROL DSPICE DE LOS PRODUCTOS
FECHA MODIFICACION:
MODIFICADO POR : JUAN SOTO
MODIFIACION : ADICION OPCION DE MODIFICAR LA ORDEN DE PEDIDOS
FECHA MODIFICACION : 29 DE OCTUBRE 2008
MODIFICADO POR : JUAN SOTO
OBSERVACION : ESTA FUNCION ESTA EN COMENTARIO POR EL MOMENTO
FECHA : 26/08/2011
MODIFICACION : FUNCION EVALUACION ESTADO DEL CLIENTE
MODIFICADO POR : Ing. Juan Soto
FECHA : 27/08/2011
OBJETIVO : Hacer la requisicon de despacho de forma automatica
La requisicion de despacho es una version para
MARMOTECH
------------------------------------------------------------------
}
GLOBALS "prprgb000.4gl"
DEFINE despiece DYNAMIC ARRAY OF RECORD
etiqueta CHAR(20),
area SMALLINT,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
lado_1 DEC(12,5),
lado_2 DEC(12,5),
lado_3 DEC(12,5),
cantidad DEC(12,5),
medida DEC(12,5)
END RECORD,
chanula VARCHAR(3),
total_medida,pcontrol DEC(12,5),
factor_conv DEC(12,5),
num_emp_inst,tmpnumero,num_doc_retrabajo INTEGER,
arrcuenta,tiene_compromiso SMALLINT,
nuevo,cliente1,conduce CHAR(1),
descrip_ventas CHAR(30),
pnombre_proyecto,pdireccion_proyecto CHAR(60),
documento_ref CHAR(15),
monto_cotiza DEC(12,2),
control_despiece CHAR(3),
tipoImpresion VARCHAR(2)
#9639
#829-705-9157 BENITO ALCANTARA
DEFINE nombre LIKE vetb00004.nombre,
descrip_esp LIKE iptb00002.descrip_esp,
unidad LIKE iptb00002.unidad_med,
esta,opt4 CHAR(15),
nombre_vend,nombres,apellidos CHAR(40),fcalle CHAR(25),
fcasa_num CHAR(5), fbarrio,furbanizacion CHAR(15),
monto_desc,total1,p_costos1,total_i,total_mo DECIMAL(12,2),
ult_numero,cuenta INTEGER,
vetb05 RECORD LIKE vetb00005.*,
cuenta_p,ridx SMALLINT,
pbalance1,pbalance2 DEC(12,2),
descripcion_ventas CHAR(30),
resultado CHAR(2)
DEFINE prtb15 DYNAMIC ARRAY OF RECORD
num_oc LIKE prtb00015.num_oc,
area SMALLINT,
cod_n LIKE prtb00015.cod_n,
cod_grupo LIKE prtb00015.cod_grupo,
cod_tipo LIKE prtb00015.cod_tipo,
cod_sec LIKE prtb00015.cod_sec,
cantidad_1 DEC(12,5),
cantidad LIKE prtb00015.cantidad,
fecha LIKE prtb00015.fecha
END RECORD
DEFINE p_prtb14 RECORD LIKE prtb00014.*
DEFINE f_itbis DEC(10,2)
DEFINE sub_total,sub_total1,balance DECIMAL(10,2),
descrip_p CHAR(30)
DEFINE p_totales RECORD
sub_total DEC(12,2), #-> Sub-Total de los Productos menos descuento
unidad_med CHAR(4), #-> Unidad de medida del producto
total_v DEC(12,2) #-> Total de la venta
END RECORD
DEFINE arr_prtb08 DYNAMIC ARRAY OF RECORD
fila SMALLINT,
area 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,
descrip_esp LIKE iptb00002.descrip_esp,
unidad_med LIKE iptb00002.unidad_med,
altura_zocalo LIKE prtb00013.altura_zocalo,
terminacion CHAR(1),
bisel LIKE prtb00013.bisel,
cantidad_1 DEC(12,5),
cantidad LIKE prtb00013.cantidad,
precio LIKE prtb00013.precio,
descuento LIKE prtb00013.descuento,
total_p DECIMAL(10,2)
END RECORD
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
CALL ARG_VAL(4) RETURNING copia
CONNECT TO "marmotech" AS "IFMX" USER usuarios USING clave
CONNECT to "smarmotech" AS "MSSQL" USER usuarios USING clave
SELECT a.controlDespiece INTO control_despiece
FROM seg0003 a
WHERE a.usuario =usuarios
CALL prprmt008()
END MAIN
FUNCTION prprmt008()
# WHENEVER ERROR CONTINUE
CLEAR SCREEN
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 23
OPEN WINDOW ctfmmt008 AT 4,3 WITH FORM "prfmmt008"
MENU
ON ACTION nuevo
LET INT_FLAG = FALSE
CLEAR FORM
LET nuevo = "S"
SET CONNECTION "MSSQL"
#CALL prpcad008()
CALL seg000(usuarios,0,'prprmt008.nuevo') RETURNING resultado
IF resultado = "SI" THEN
CALL prpcad008_r()
END IF
ON ACTION buscar
LET INT_FLAG = FALSE
CLEAR FORM
LET nuevo = "N"
SET CONNECTION "MSSQL"
CALL prpcmf008()
ON ACTION salir
EXIT MENU
END MENU
END FUNCTION
FUNCTION prpcad008()
## Captura los datos que va a contener el registro
LET INT_FLAG = false
LABEL vuelve:
IF nuevo = "S" THEN
INITIALIZE prtb08.* TO NULL
LET prtb08.num_oc = 0
LET prtb08.fecha_entrega = TODAY + 20
SELECT a.num_oc INTO tmpnumero FROM prtb00024 a
LET tmpnumero = tmpnumero + 1
UPDATE prtb00024 set num_oc = tmpnumero
LET prtb08.fecha_oc = TODAY
DISPLAY BY NAME prtb08.fecha_oc ATTRIBUTE(BLUE)
INPUT BY NAME prtb08.cotizacion_no,documento_ref,prtb08.num_oc,prtb08.fecha_oc,
prtb08.tipo_cliente,prtb08.sec_cliente,
prtb08.fecha_entrega,
prtb08.ubicacion WITHOUT DEFAULTS
AFTER FIELD cotizacion_no
LET pnombre_proyecto = NULL
LET pdireccion_proyecto = NULL
LET monto_cotiza = 0
SELECT a.ventas,a.tipo_cliente,a.sec_cliente,a.sec_vend,a.cond_pago,
a.direccion_proyecto,a.porc_itbi,a.nombre_proyecto,
a.total_neto,a.nombre_cliente,a.telefono_r,a.fax
iNTO prtb08.ventas,prtb08.tipo_cliente,prtb08.sec_cliente,prtb08.sec_vend,
prtb08.cond_pago,prtb08.ubicacion,f_itbis,pnombre_proyecto,
monto_cotiza,nombre,prtb08.telefono,prtb08.fax
FROM vetb00050 a
WHERE a.cotizacion_no = prtb08.cotizacion_no AND a.status_t IS NULL
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cotizacion_no
END IF
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
SELECT a.nom1_emp,a.apell1_emp INTO nombres,apellidos
FROM adtb00003 a
WHERE a.num_emp = prtb08.sec_vend
SELECT a.descrip INTO descrip_p
FROM vetb00012 a
WHERE a.cond_pago = prtb08.cond_pago AND
a.status_t IS NULL
LET nombre_vend = nombres CLIPPED," ",apellidos CLIPPED
DISPLAY descrip_p TO cond_pago
SELECT a.descripcion INTO descrip_ventas FROM vetb00061 a
WHERE a.ventas = prtb08.ventas
DISPLAY BY NAME nombre,prtb08.telefono, prtb08.fax, prtb08.direccion,
nombre_vend,prtb08.tipo_cliente,prtb08.sec_cliente,
prtb08.sec_vend,prtb08.ubicacion,descrip_ventas
# CONTROL ORDEN
SELECT a.num_oc FROM prtb00012 a
WHERE a.cotizacion_no = prtb08.cotizacion_no AND
a.status_t IS NULL
IF STATUS <> NOTFOUND THEN
LET numero_msg =400
CALL msg(numero_msg)
NEXT FIELD cotizacion_no
END IF
SELECT SUM(a.valor) INTO pbalance1
FROM cctb00001 a
WHERE a.tipo_cliente = prtb08.tipo_cliente
AND a.sec_cliente = prtb08.sec_cliente AND
a.tipo_doc NOT IN ("PC","AV")
AND a.status_t IS NULL
IF pbalance1 IS NULL THEN
LET pbalance1 = 0
END IF
SELECT SUM(a.valor) INTO pbalance2
FROM cctb00001 a
WHERE a.tipo_cliente = prtb08.tipo_cliente
AND a.sec_cliente = prtb08.sec_cliente AND
a.tipo_doc IN ("AV")
AND a.status_t IS NULL
IF pbalance2 IS NULL THEN
LET pbalance2 = 0
END IF
LET balance = pbalance1 - pbalance2
DISPLAY BY NAME balance
AFTER FIELD sec_cliente
IF prtb08.sec_cliente IS NOT NULL THEN
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 =70
CALL msg(numero_msg)
NEXT FIELD cotizacion_no
END IF
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 nombre,prtb08.direccion
END IF
AFTER FIELD sec_vend
IF prtb08.sec_vend 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
CALL msg(3)
NEXT FIELD sec_vend
END IF
LET nombre_vend = nombres CLIPPED," ",apellidos CLIPPED
DISPLAY BY NAME nombre_Vend
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
BEFORE FIELD fecha_oc
IF nuevo = "S" THEN
LET prtb08.fecha_oc = TODAY
DISPLAY BY NAME prtb08.fecha_oc ATTRIBUTE(BLUE)
END IF
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 INPUT
IF INT_FLAG THEN
LET opt4 = FGL_WINQUESTION("Pregunta","Esta seguro que desea salir del programa?","no","yes|no|cancel","question",0)
LET opt4 = UPSHIFT(opt4)
IF opt4 = "NO" THEN
LET INT_FLAG = FALSE
LET opt4 = NULL
CONTINUE INPUT
END IF
LET numero_msg = 2
CALL msg(numero_msg)
LET INT_FLAG = FALSE
RETURN
END IF
IF prtb08.fecha_oc IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cotizacion_no
END IF
# IF documento_ref IS NULL THEN
# LET numero_msg = 16
# CALL msg(numero_msg)
# NEXT FIELD documento_ref
# END IF
IF prtb08.tipo_cliente IS NULL THEN
CALL msg(16)
NEXT FIELD tipo_cliente
END IF
IF prtb08.sec_cliente IS NOT NULL THEN
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 =70
CALL msg(numero_msg)
NEXT FIELD cotizacion_no
END IF
END IF
IF prtb08.sec_cliente IS NULL THEN
CALL msg(16)
NEXT FIELD sec_cliente
END IF
END INPUT
END IF
IF nuevo = "S" THEN
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
CALL arr_prtb08.clear()
DECLARE busca_Detalle CURSOR FOR
SELECT '1',a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,b.descrip_esp,b.unidad_med,
' ',' ',' ',a.cantidad_1,a.cantidad,'0','0'
FROM vetb00051 a,iptb00002 b
WHERE a.cod_n = b.cod_n and a.cod_grupo = b.cod_grupo and a.cod_tipo = b.cod_tipo and
a.cod_Sec = b.cod_Sec and
a.cotizacion_no = prtb08.cotizacion_no and
a.status_t is null
LET idx = 1
LET monto_desc = 0
LET total1 = 0
FOREACH busca_detalle INTO arr_prtb08[idx].*
LET arr_prtb08[idx].fila = idx
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 p_totales.sub_total = p_totales.sub_total + arr_prtb08[idx].total_p
SELECT UNIQUE a.factor_conv INTO factor_conv FROM iptb00001 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 arr_prtb08[idx].cantidad_1 = arr_prtb08[idx].cantidad / factor_conv
LET idx = idx + 1
END FOREACH
CALL set_count(idx-1)
DISPLAY BY NAME p_totales.sub_total
END IF
LET p_totales.sub_total = 0
INPUT ARRAY arr_prtb08 WITHOUT DEFAULTS FROM s_pedido.*
# ON KEY(F9)
# CALL parciales()
ON KEY(F10)
# CONTROL DESPIECE
IF control_despiece = 'SI' THEN
IF nuevo <> "S" THEN
SELECT UNIQUE a.cod_n FROM iptb00027 a
WHERE 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
IF STATUS != NOTFOUND THEN
SELECT UNIQUE a.cod_n FROM prtb00022 a
WHERE a.secuencia = arr_prtb08[curr].fila 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.num_oc = prtb08.num_oc
IF STATUS = NOTFOUND THEN
LET numero_msg =398
CALL msg(numero_msg)
CALL despiece()
SELECT UNIQUE a.factor_conv INTO factor_conv FROM iptb00001 a
WHERE 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
LET arr_prtb08[curr].cantidad = arr_prtb08[curr].cantidad_1 * factor_conv
DISPLAY arr_prtb08[curr].cantidad TO s_pedido[scr_l].cantidad
DISPLAY arr_prtb08[curr].cantidad_1 TO s_pedido[scr_l].cantidad_1
NEXT FIELD cantidad_1
END IF
ELSE
ERROR "ESTE PRODUCTO NO SE DESPIEZA"
NEXT FIELD cod_n
END IF
END IF
###---------------------------------------------------------------
END IF
IF control_Despiece = 'SI' THEN
CALL despiece()
END IF
SELECT UNIQUE a.factor_conv INTO factor_conv FROM iptb00001 a
WHERE 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
LET arr_prtb08[curr].cantidad = arr_prtb08[curr].cantidad_1 * factor_conv
DISPLAY arr_prtb08[curr].cantidad TO s_pedido[scr_l].cantidad
DISPLAY arr_prtb08[curr].cantidad_1 TO s_pedido[scr_l].cantidad_1
# NEXT FIELD cantidad_1
BEFORE ROW
LET curr = arr_curr()
LET scr_l = scr_line()
IF arr_prtb08[curr].area IS NULL THEN
LET arr_prtb08[curr].area=1
END IF
IF nuevo = "S" THEN
LET sub_total = 0
END IF
# CONTROL DESPIECE
SELECT UNIQUE a.cod_n FROM iptb00027 a
WHERE 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
IF STATUS <> NOTFOUND THEN
DISPLAY arr_prtb08[curr].cod_n TO s_pedido[scr_l].cod_n ATTRIBUTE(RED)
DISPLAY arr_prtb08[curr].cod_grupo TO s_pedido[scr_l].cod_grupo ATTRIBUTE(RED)
DISPLAY arr_prtb08[curr].cod_tipo TO s_pedido[scr_l].cod_tipo ATTRIBUTE(RED)
DISPLAY arr_prtb08[curr].cod_sec TO s_pedido[scr_l].cod_sec ATTRIBUTE(RED)
DISPLAY arr_prtb08[curr].descrip_esp TO s_pedido[scr_l].descrip_esp ATTRIBUTE(RED)
END IF
BEFORE FIELD cod_n
IF nuevo = "S" THEN
LET arr_prtb08[curr].fila = arr_curr()
DISPLAY arr_prtb08[curr].fila TO s_pedido[scr_l].fila
END IF
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
LET arr_prtb08[curr].descrip_esp = descrip_esp
LET arr_prtb08[curr].unidad_med = p_totales.unidad_med
DISPLAY arr_prtb08[curr].descrip_esp TO s_pedido[scr_l].descrip_esp
DISPLAY arr_prtb08[curr].unidad_med TO s_pedido[scr_l].unidad_med
IF control_despiece = 'SI' THEN
IF nuevo = "S" THEN
# CONTROL DESPIECE
SELECT UNIQUE a.cod_n FROM iptb00027 a
WHERE 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
IF STATUS != NOTFOUND THEN
CALL despiece()
SELECT UNIQUE a.factor_conv INTO factor_conv FROM iptb00001 a
WHERE 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
LET arr_prtb08[curr].cantidad = arr_prtb08[curr].cantidad_1 * factor_conv
DISPLAY arr_prtb08[curr].cantidad TO s_pedido[scr_l].cantidad
DISPLAY arr_prtb08[curr].cantidad_1 TO s_pedido[scr_l].cantidad_1
NEXT FIELD cantidad_1
END IF
###---------------------------------------------------------------
ELSE
# CONTROL DESPIECE
SELECT UNIQUE a.cod_n FROM iptb00027 a
WHERE 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
IF STATUS != NOTFOUND THEN
SELECT UNIQUE a.cod_n FROM prtb00022 a
WHERE a.secuencia = arr_prtb08[curr].fila 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.num_oc = prtb08.num_oc
IF STATUS = NOTFOUND THEN
LET numero_msg =398
CALL msg(numero_msg)
CALL despiece()
NEXT FIELD cod_n
END IF
END IF
END IF
END IF
### FACTOR CONVERSION
SELECT UNIQUE a.factor_conv INTO factor_conv FROM iptb00001 a
WHERE 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
ERROR "NO EXISTE FACTOR DE CONVERSION"
NEXT FIELD cod_n
END IF
# IF nuevo = "S" THEN
#LET arr_prtb08[curr].precio = p_costos1 ESTO ES PARA EL PRECIO
# END IF
DISPLAY arr_prtb08[curr].precio TO s_pedido[scr_l].precio
END IF
AFTER FIELD cantidad_1
IF arr_prtb08[curr].cantidad_1 IS NULL OR
arr_prtb08[curr].cantidad_1 < 0 THEN
LET arr_prtb08[curr].descuento = 0
END IF
LET arr_prtb08[curr].cantidad = arr_prtb08[curr].cantidad_1 * factor_conv
SELECT SUM(a.cantidad) INTO pcontrol FROM vetb00051 a
WHERE cotizacion_no = prtb08.cotizacion_no 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
IF arr_prtb08[curr].cantidad > pcontrol THEN
ERROR "CANTIDAD EXCEDE A CANTIDAD EN LA COTIZACION"
NEXT FIELD cantidad_1
END IF
DISPLAY arr_prtb08[curr].cantidad TO s_pedido[scr_l].cantidad
#CONTROL DESPIECE
SELECT UNIQUE a.cod_n FROM iptb00027 a
WHERE 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
IF STATUS != NOTFOUND THEN
SELECT SUM(a.medida) INTO pcontrol FROM prtb00022 a
WHERE a.secuencia = arr_prtb08[curr].fila 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.num_oc = prtb08.num_oc
IF STATUS = NOTFOUND THEN
LET numero_msg =398
CALL msg(numero_msg)
CALL despiece()
NEXT FIELD cod_n
END IF
END IF
AFTER ROW
IF arr_prtb08[curr].cod_sec iS NOT NULL THEN
LET arr_prtb08[curr].total_p = arr_prtb08[curr].cantidad *
arr_prtb08[curr].precio
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
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
END IF
AFTER INPUT
IF INT_FLAG THEN
LET opt4 = FGL_WINQUESTION("Pregunta","Esta seguro que desea salir del programa?","no","yes|no|cancel","question",0)
LET opt4 = UPSHIFT(opt4)
IF opt4 = "NO" THEN
LET INT_FLAG = FALSE
LET opt4 = NULL
CONTINUE INPUT
END IF
LET numero_msg = 2
CALL msg(numero_msg)
# DELETE FROM prtb00022 where num_oc = tmpnumero
LET INT_FLAG = FALSE
RETURN
END IF
{ # CALCULO DE LOS TOTALES
LET p_totales.sub_total = 0
LET scr_l = scr_line()
FOR idx = 1 TO arr_count()
# IF arr_prtb08[idx].total_p IS NULL THEN
IF arr_prtb08[idx].precio IS NOT NULL OR
arr_prtb08[idx].cantidad IS NOT NULL THEN
IF arr_prtb08[idx].precio = 0 THEN
LET numero_msg = 207
CALL msg(numero_msg)
CONTINUE INPUT
END IF
LET monto_desc = (arr_prtb08[idx].precio * arr_prtb08[idx].cantidad) *
(arr_prtb08[idx].descuento /100)
IF monto_Desc IS NULL THEN
LET monto_Desc = 0
END IF
LET arr_prtb08[idx].total_p = (arr_prtb08[idx].cantidad *
arr_prtb08[idx].precio)-
monto_desc
IF arr_prtb08[idx].total_p IS NOT NULL THEN
IF p_totales.sub_total IS NULL THEN
LET p_totales.sub_total = 0
END IF
LET p_totales.sub_total = p_totales.sub_total + arr_prtb08[idx].total_p
DISPLAY BY NAME p_totales.sub_total
END IF
END IF
DISPLAY arr_prtb08[idx].total_p TO s_pedido[scr_l].total_p
# END IF
# IF arr_prtb08[idx].total_p IS NOT NULL THEN
LET bandera = 0
LET ridx = idx
# END IF
END FOR
DISPLAY BY NAME p_totales.sub_total
IF p_totales.sub_total IS NULL OR p_totales.sub_total = 0 THEN
LET numero_msg =207
CALL msg(numero_msg)
# CONTINUE INPUT
END IF
}
#-> Registra las observaciones de la orden corte vg Tuesday, 13 March, 2001 11:08:14 AM
CALL oc_detalles()
EXIT INPUT
END INPUT
LET arrcuenta = arr_count()
# LET p_totales.total_v = p_totales.sub_total
# DISPLAY BY NAME p_totales.sub_total,p_totales.total_v
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)
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 <> 17 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
LABEL correcto:
LET opt4 = FGL_WINQUESTION("Pregunta","Toda La informacion Esta Correcta","yes","yes|no|cancel","question",0)
# PROMPT "TODA LA INFORMACION ESTA CORRECTA? " FOR opt4
LET opt4 = upshift(opt4)
IF opt4 IS NULL THEN
go to correcto
END IF
IF opt4 = "YES" THEN
# SE COLOCO QUE EL NUMERO SE GENERARA A PARTIR DEL 01/01/2003 HACIA ATRAS POR MODIFICACION DEL
# SISTEMA Y LA INCLUSION DEL NCF A PARTIR DEL 01/01/2007
# FECHA MODIFICACION: 11/01/2007
SELECT num_oc INTO ult_numero FROM prtb00020
IF nuevo = "S" THEN
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
UPDATE prtb00020 set num_oc = ult_numero,
us_crea = SUSER_SNAME(),
fech_crea = GETDATE()
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia1
START REPORT o_pedido TO archivo
END IF
#LET prtb08.nombre_file = parchivo 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
IF nuevo = "S" THEN
LET prtb08.cerrada = "N"
LET Prtb08.nombre_file = documento_ref
# ACTUALIZACION BASE DE DASTOS MSSQL
INSERT INTO prtb00012 VALUES (prtb08.*)
DELETE FROM prtb00014 WHERE num_oc = prtb08.num_oc
INSERT INTO prtb00014 VALUES (prtb08.num_oc,p_prtb14.observacion,NULL,SUSER_SNAME(),GETDATE(),NULL,NULL)
INSERT INTO prtb00009 (num_oc,fecha,detalle,us_crea,fech_crea) VALUES (prtb08.num_oc,prtb08.fecha_oc,'CREACION ORDEN',usuarios,getdate())
UPDATE prtb00012 SET us_crea = SUSER_SNAME(),
fech_crea = GETDATE()
WHERE @num_oc = prtb08.num_oc
UPDATE prtb00009 SET us_crea = SUSER_SNAME(),
fech_crea = GETDATE()
WHERE @num_oc = prtb09.num_oc
UPDATE prtb00020 SET num_oc = ult_numero,
us_Crea = SUSER_SNAME(),
fech_crea = GETDATE()
# ACTUALIZA NUMERO TEMPORAL PARA EL DESPIECE
UPDATE prtb00022 SET num_oc = prtb08.num_oc WHERE num_oc = tmpnumero
UPDATE prtb00024 SET num_oc = num_oc + 1
# 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].fila,
arr_prtb08[idx].area,
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,SUSER_SNAME(),GETDATE(),null,null)
INSERT INTO prtb00023 VALUES (prtb08.num_oc,
arr_prtb08[idx].fila,
arr_prtb08[idx].area,
arr_prtb08[idx].cod_n,
arr_prtb08[idx].cod_grupo,
arr_prtb08[idx].cod_tipo,
arr_prtb08[idx].cod_sec,
arr_prtb08[idx].cantidad_1,
arr_prtb08[idx].cantidad)
OUTPUT TO REPORT o_pedido(prtb08.num_oc,arr_prtb08[idx].*,p_prtb14.*)
END IF
END FOR
# EVALUA LA SITUACION DEL CLIENTE PARA HACER LA REQUISICION DE DESPACHO Y AUTORIZARLA
# AUTOMATICAMENTE
#IF evaluaclientes(prtb08.tipo_cliente,prtb08.sec_cliente,prtb08.cond_pago,monto_cotiza) THEN
# LET procede = fgl_winquestion("REQUISICION","ESTE CLIENTE ES ELEGIBLE PARA HACER REQUSICION AUTOMATICA, DESEA HACER ESTE DOCUEMTNO?","YES","YES|NO","QUESTION",0)
# IF procede = "YES" THEN
# CALL requisiciondespacho(prtb08.*)
# END IF
#END IF
{ se puso en comentario porque me estaba dando error al momento de introducir los datos}
#INSERT INTO prtb00009 (num_oc,fecha,fecha_fabricacion,pendiente,detalle,us_crea,fech_crea)
# VALUES (prtb09.num_oc,prtb09.fecha,prtb09.fecha_fabricacion,prtb09.pendiente,prtb09.detalle,SUSER_SNAME(),GETDATE())
# Actualizacion Parcialidades
FOR idx = 1 TO cuenta_p
INSERT INTO prtb00015 VALUES (prtb08.num_oc,
prtb15[idx].area,
prtb15[idx].cod_n,
prtb15[idx].cod_grupo,
prtb15[idx].cod_tipo,
prtb15[idx].cod_sec,
prtb15[idx].cantidad,
prtb15[idx].fecha,
null,SUSER_SNAME(),GETDATE())
END FOR
FINISH REPORT o_pedido
RUN imprime
LET archivo1 = archivo
CALL defecto(usuarios,clave,copia) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia1
LET cmd = "TYPE ",archivo1 CLIPPED," ",copia1
DISPLAY cmd CLIPPED
RUN cmd
#------------------------------ FIN MSSQL-------------------------------------
ELSE
# ACTUALIZACION DE LA ORDEN
UPDATE prtb00012 SET prtb00012.* = prtb08.* WHERE prtb00012.num_oc = prtb08.num_oc
UPDATE prtb00014 SET (observacion,us_mod,fech_mod)=
(p_prtb14.observacion,SUSER_SNAME(),GETDATE()) WHERE prtb00014.num_oc = p_prtb14.num_oc
UPDATE prtb00012 SET us_mod = SUSER_SNAME(),
fech_mod= GETDATE()
WHERE @num_oc = prtb08.num_oc
#LET archivo = FGL_GETENV("USORDEN")
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia
START REPORT o_pedido TO archivo
DELETE FROM prtb00013 WHERE Num_oc = prtb08.num_oc
DELETE FROM prtb00023 WHERE Num_oc = prtb08.num_oc
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].fila,
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,SUSER_SNAME(),GETDATE(),null,null)
INSERT INTO prtb00023 VALUES (prtb08.num_oc,arr_prtb08[idx].fila,
arr_prtb08[idx].cod_n,
arr_prtb08[idx].cod_grupo,
arr_prtb08[idx].cod_tipo,
arr_prtb08[idx].cod_sec,
arr_prtb08[idx].cantidad_1,
arr_prtb08[idx].cantidad)
OUTPUT TO REPORT o_pedido(prtb08.num_oc,arr_prtb08[idx].*,p_prtb14.*)
END IF
END FOR
DELETE FROM prtb00015 WHERE num_oc = prtb08.num_oc
# Actualizacion Parcialidades
FOR idx = 1 TO cuenta_p
INSERT INTO prtb00015 VALUES (prtb08.num_oc,
prtb15[idx].cod_n,
prtb15[idx].cod_grupo,
prtb15[idx].cod_tipo,
prtb15[idx].cod_sec,
prtb15[idx].cantidad,
prtb15[idx].fecha,
null,SUSER_SNAME(),GETDATE())
END FOR
FINISH REPORT o_pedido
{LET cmd ="TYPE ", archivo CLIPPED," > ",FGL_GETENV("USPRINTO")
DISPLAY "IMP ",cmd
RUN cmd
LET cmd ="TYPE ", archivo CLIPPED," > ",FGL_GETENV("USPRINTO1")
RUN cmd
}
RUN imprime
LET impresor = copia
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia
LET cmd = "TYPE ",archivo CLIPPED," ",copia
display "CMD ",cmd
RUN cmd
LET numero_msg = 1
CALL msg(numero_msg)
END IF # DECICION ACTUALIZACION
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.cotizacion_no,a.num_oc,a.tipo_cliente,a.sec_cliente,
a.fecha_oc
CALL cinstalador()
IF INT_FLAG THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET INT_FLAG = FALSE
RETURN
END IF
LET SELEC = " SELECT a.ventas,a.cotizacion_no,num_oc,CONVERT(CHAR(10),a.fecha_oc,103), ",
" a.nombre_file,a.sec_vend,a.tipo_cliente,a.sec_cliente, a.direccion, ",
" a.telefono,a.fax,CONVERT(CHAR(10),a.fecha_entrega,103),a.cond_pago,a.cantidad_i,a.precio_i,a.cantidad_mo,",
" a.precio_mo,a.transporte,a.itbis,a.ubicacion,a.cerrada,a.nombre_file2,a.tipo_orden,a.num_emp_inst ",
# " a.num_oc_r,a.num_doc_retrabajo FROM prtb00012 a ",
" FROM prtb00012 a ",
" WHERE ",criterio CLIPPED, " AND a.status_t IS NULL "," ORDER BY a.num_oc "
PREPARE busca FROM selec
DECLARE datos SCROLL CURSOR FOR busca
OPEN datos
#FETCH FIRST datos INTO prtb08.ventas,prtb08.cotizacion_no,prtb08.num_oc,prtb08.fecha_oc
FETCH FIRST datos INTO prtb08.ventas,prtb08.cotizacion_no,prtb08.num_oc, prtb08.fecha_oc,prtb08.nombre_file,prtb08.sec_vend,
prtb08.tipo_cliente,prtb08.sec_cliente,prtb08.direccion,prtb08.telefono,prtb08.fax,
prtb08.fecha_entrega,prtb08.cond_pago,prtb08.cantidad_i,prtb08.precio_i,prtb08.cantidad_mo,
prtb08.precio_mo,prtb08.transporte,prtb08.itbis,prtb08.ubicacion,prtb08.cerrada,prtb08.nombre_file2,prtb08.tipo_orden,num_emp_inst,
prtb08.num_oc_r,num_doc_retrabajo
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 p_totales.total_v,prtb08.tipo_orden,num_emp_inst,prtb08.num_oc_r,num_doc_retrabajo
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
MENU "OPCIONES "
COMMAND "Siguiente" "Presenta en pantalla el proprtb08.mo registro encontrado"
FETCH NEXT datos INTO prtb08.ventas,prtb08.cotizacion_no,prtb08.num_oc, prtb08.fecha_oc,prtb08.nombre_file,prtb08.sec_vend,
prtb08.tipo_cliente,prtb08.sec_cliente,prtb08.direccion,prtb08.telefono,prtb08.fax,
prtb08.fecha_entrega,prtb08.cond_pago,prtb08.cantidad_i,prtb08.precio_i,prtb08.cantidad_mo,
prtb08.precio_mo,prtb08.transporte,prtb08.itbis,prtb08.ubicacion,prtb08.cerrada,prtb08.nombre_file2,prtb08.tipo_orden,num_emp_inst,
prtb08.num_oc_r,num_doc_retrabajo
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
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,prtb08.tipo_orden,num_emp_inst,prtb08.num_oc_r,num_doc_retrabajo
COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado"
FETCH PREVIOUS datos INTO prtb08.ventas,prtb08.cotizacion_no,prtb08.num_oc,prtb08.fecha_oc,prtb08.nombre_file,prtb08.sec_vend,
prtb08.tipo_cliente,prtb08.sec_cliente,prtb08.direccion,prtb08.telefono,prtb08.fax,
prtb08.fecha_entrega,prtb08.cond_pago,prtb08.cantidad_i,prtb08.precio_i,prtb08.cantidad_mo,
prtb08.precio_mo,prtb08.transporte,prtb08.itbis,prtb08.ubicacion,prtb08.cerrada,prtb08.nombre_file2,prtb08.tipo_orden,num_emp_inst,
prtb08.num_oc_r,num_doc_retrabajo
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
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,prtb08.tipo_orden,num_emp_inst,prtb08.num_oc_r,num_doc_retrabajo
COMMAND "Primero" "Presenta en pantalla el primer registro encontrado"
FETCH FIRST datos INTO prtb08.ventas,prtb08.cotizacion_no,prtb08.num_oc,prtb08.fecha_oc,prtb08.nombre_file,prtb08.sec_vend,
prtb08.tipo_cliente,prtb08.sec_cliente,prtb08.direccion,prtb08.telefono,prtb08.fax,
prtb08.fecha_entrega,prtb08.cond_pago,prtb08.cantidad_i,prtb08.precio_i,prtb08.cantidad_mo,
prtb08.precio_mo,prtb08.transporte,prtb08.itbis,prtb08.ubicacion,prtb08.cerrada,prtb08.nombre_file2,prtb08.tipo_orden,num_emp_inst,
prtb08.num_oc_r,num_doc_retrabajo
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
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,prtb08.tipo_orden,num_emp_inst,prtb08.num_oc_r,num_doc_retrabajo
NEXT OPTION "primero"
COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado"
FETCH LAST datos INTO prtb08.ventas,prtb08.cotizacion_no,prtb08.num_oc,prtb08.fecha_oc,prtb08.nombre_file,prtb08.sec_vend,
prtb08.tipo_cliente,prtb08.sec_cliente,prtb08.direccion,prtb08.telefono,prtb08.fax,
prtb08.fecha_entrega,prtb08.cond_pago,prtb08.cantidad_i,prtb08.precio_i,prtb08.cantidad_mo,
prtb08.precio_mo,prtb08.transporte,prtb08.itbis,prtb08.ubicacion,prtb08.cerrada,prtb08.nombre_file2,prtb08.tipo_orden,num_emp_inst,
prtb08.num_oc_r,num_doc_retrabajo
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
CALL busca_cliente8m()
CALL busca_vendm8()
#CALL limpia8()
CALL busca_detalle8()
DISPLAY BY NAME prtb08.tipo_orden,num_emp_inst,prtb08.num_oc_r,num_doc_retrabajo
NEXT OPTION "anterior"
COMMAND KEY ("V") "SuperVisor"
SELECT a.usuario FROM seg0001 a,seg0005 b
WHERE a.usuario = usuarios AND a.cod_perfil = b.cod_perfil AND
b.programa = "prprmt011.instalador"
IF STATUS <> NOTFOUND THEN
INPUT BY NAME num_emp_inst WITHOUT DEFAULTS
BEFORE INPUT
CALL cinstalador()
AFTER INPUT
IF INT_FLAG THEN
LET INT_FLAG = FALSE
CALL msg(2)
EXIT INPUT
END IF
UPDATE prtb00012 SET prtb00012.num_emp_inst =num_emp_inst,us_mod = usuarios,fech_mod = getdate()
WHERE num_oc = prtb08.num_oc
UPDATE vetb00050 SET vetb00050.num_emp_inst = num_emp_inst WHERE cotizacion_no = prtb08.cotizacion_no
CALL msg(13)
END INPUT
ELSE
CALL fgl_winmessage("INFO","USTED NO TIENE PERMISO PARA UTILIZAR OPCION","INFO")
END IF
COMMAND KEY ("T") "Actualizar"
IF control_despiece = "SI" THEN
LET nuevo = "N"
CALL prpcad008()
ELSE
CALL msg(-273)
CONTINUE MENU
END IF
COMMAND KEY ("N") "aNular"
LET chanula = fgl_winquestion("ORDEN","ESTA SEGURO DE ANULAR ESTA ORDEN?","NO","YES|NO","QUESTION",0)
IF chanula = "YES" THEN
SET CONNECTION "IFMX"
SELECT DISTINCT a.orden FROM vetb00002 a WHERE a.orden = prtb08.num_oc AND a.status_t IS NULL
IF STATUS <> NOTFOUND THEN
CALL fgl_winmessage("INFO","NO PUEDE ANULAR ESTA ORDEN, TIENE FACTURA CON NCF","INFO")
SET CONNECTION "MSSQL"
CONTINUE MENU
END IF
SET CONNECTION "MSSQL"
# VERIFICACION SI TIENE FECHA DE PRODUCCION
LET tiene_compromiso = 0
SELECT COUNT(*) INTO tiene_compromiso FROM prtb00013 a
WHERE a.num_oc = prtb08.num_oc AND
a.fech_Crea > '01/01/2007' AND
a.fecha_compromiso IS NOT NULL AND
a.status_t is null
IF tiene_compromiso > 0 THEN
CALL FGL_WINMESSAGE("INFO", "NO PUEDE ANULAR ORDEN, TIENE FECHA COMPROMISO PRODUCCION","INFO")
CONTINUE MENU
END IF
# VERIFICA SI TIENE REQUISICION
SELECT UNIQUE a.num_oc FROM cctb00026 a
WHERE a.num_oc = prtb08.num_oc AND
a.status_t IS NULL
IF STATUS <> NOTFOUND THEN
CALL fgl_winmessage("ERROR","NO PUEDE ANULAR ORDEN, TIENE REQUISICION","INFO")
CONTINUE MENU
END IF
# VERIFICA SI ESTA FACTURADA LA ORDEN
SELECT UNIQUE a.orden FROM vetb00002 a
WHERE a.orden = prtb08.num_oc AND
a.status_t is null
IF STATUS != NOTFOUND THEN
ERROR "NO PUEDE ANULAR ORDEN, TIENE FACTURAS"
CONTINUE MENU
END IF
# VERIFICACION DESPACHO
SELECT UNIQUE a.conduce_no FROM iptb00006 a
WHERE a.num_oc = prtb08.num_oc AND
a.fech_Crea > '01/01/2007' and
a.status_t is null
IF STATUS != NOTFOUND THEN
ERROR "NO PUEDE ANULAR ORDEN, TIENE TRANSACCIONES DE INVENTARIO"
CONTINUE MENU
END IF
UPDATE prtb00012 SET status_t = 'E',
cerrada='E',
us_mod = usuarios,
fech_mod = getdate()
WHERE num_oc =prtb08.num_oc
UPDATE prtb00013 SET status_t = 'E',
us_mod = usuarios,
fech_mod = getdate()
WHERE num_oc =prtb08.num_oc
# SET CONNECTION "IFMX"
UPDATE prtb00012 SET status_t = 'E',
cerrada = 'E',
us_mod = usuarios,
fech_mod = getdate()
WHERE num_oc =prtb08.num_oc
UPDATE prtb00013 SET status_t = 'E',
us_mod = usuarios,
fech_mod = getdate()
WHERE num_oc =prtb08.num_oc
CALL fgl_winmessage("WARNING","ORDEN ANULADA","INFO")
END IF
SET CONNECTION "MSSQL"
COMMAND KEY ("I") "rImprimir"
INPUT BY NAME tipoimpresion
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
SELECT * INTO p_prtb14.* FROM prtb00014
WHERE @num_oc = prtb08.num_oc
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)
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
CALL busca_cliente8m()
CALL busca_vendm8()
#CALL limpia8()
CALL busca_detalle8()
#LET archivo = FGL_GETENV("USORDEN")
IF tipoimpresion = 'MA' THEN
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia1
START REPORT o_pedido TO archivo
ELSE
LET HANDLER = configureoutput("PDF")
START REPORT o_pedido TO XML HANDLER handler
END IF
# OUTPUT TO REPORT o_pedido(prtb08.num_oc,arr_prtb08[idx].*,p_prtb14.*)
SELECT COUNT(*) INTO cuenta
FROM prtb00013 a
WHERE a.num_oc = prtb08.num_oc
FOR idx = 1 TO cuenta
OUTPUT TO REPORT o_pedido(prtb08.num_oc,arr_prtb08[idx].*,p_prtb14.*)
END FOR
FINISH REPORT o_pedido
{LET cmd ="TYPE ", archivo CLIPPED," > ",FGL_GETENV("USPRINTO")
DISPLAY "IMP ",cmd
RUN cmd
LET cmd ="TYPE ", archivo CLIPPED," > ",FGL_GETENV("USPRINTO1")
RUN cmd
}
# display "cmd princ ",imprime
IF tipoimpresion = 'MA' THEN
LET respuesta = fgl_winquestion("IMPRESION","DESA IMPRIMIR PRINTER POR DEFECTO?","yes","yes|no","question",0)
LET respuesta = UPSHIFT(respuesta)
IF respuesta = "YES" THEN
RUN imprime
END IF
LET archivo1 = archivo
IF prtb08.tipo_orden <> "GENERAL" THEN
SELECT a.printer_cheque INTO copia FROM seg0001 a WHERE a.usuario = usuarios
END IF
CALL defecto(usuarios,clave,copia) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia1
LET cmd = "TYPE ",archivo1 CLIPPED," ",copia1
# display "CMD copia ",cmd
LET respuesta = fgl_winquestion("IMPRESION","DESA IMPRIMIR PRINTER REMOTO?","yes","yes|no","question",0)
LET respuesta = UPSHIFT(respuesta)
IF respuesta = "YES" THEN
RUN cmd
END IF
END IF
CLEAR FORM
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()
LET SELEC1 =
"SELECT a.secuencia,a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,c.descrip_esp,c.unidad_med,a.terminacion, ",
" a.altura_zocalo,a.bisel,b.cantidad_1,a.cantidad,a.precio,a.descuento ",
" FROM prtb00013 a,iptb00002 c, prtb00023 b ",
"WHERE a.num_oc = ? AND ",
" a.secuencia = b.secuencia AND ",
" a.num_oc = b.num_oc AND ",
" a.cod_n = b.cod_n AND ",
" a.area = b.area AND ",
" a.cod_grupo = b.cod_grupo AND ",
" a.cod_tipo = b.cod_tipo AND ",
" a.cod_sec = b.cod_sec AND ",
" a.cod_n = c.cod_n AND ",
" a.cod_grupo = c.cod_grupo AND ",
" a.cod_tipo = c.cod_tipo AND ",
" a.cod_sec = c.cod_sec ",
"UNION ",
"SELECT a.secuencia,a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,c.descrip_esp,c.unidad_med,a.terminacion, ",
" a.altura_zocalo,a.bisel,b.cantidad_1,a.cantidad,a.precio,a.descuento ",
" FROM historicoMTECH.dbo.prtb00013 a,historicoMTECH.dbo.iptb00002 c, historicoMTECH.dbo.prtb00023 b ",
"WHERE a.num_oc = ? AND ",
" a.secuencia = b.secuencia AND ",
" a.num_oc = b.num_oc AND ",
" a.cod_n = b.cod_n AND ",
" a.area = b.area and ",
" a.cod_grupo = b.cod_grupo AND ",
" a.cod_tipo = b.cod_tipo AND ",
" a.cod_sec = b.cod_sec AND ",
" a.cod_n = c.cod_n AND ",
" a.cod_grupo = c.cod_grupo AND ",
" a.cod_tipo = c.cod_tipo AND ",
" a.cod_sec = c.cod_sec ",
" ORDER BY a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec "
DISPLAY "ORDEN ",prtb08.num_oc
PREPARE comando1 FROM selec1
DECLARE busca_d CURSOR FOR comando1
OPEN busca_d USING prtb08.num_oc,prtb08.num_oc
LET idx = 1
LET p_totales.sub_total = 0
LET p_totales.total_v = 0
CALL arr_prtb08.clear()
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
# IF arr_prtb08[idx].descuento != 0 THEN
LET monto_desc = (arr_prtb08[idx].precio * arr_prtb08[idx].cantidad) *
(arr_prtb08[idx].descuento /100)
# END IF
LET total1 = (arr_prtb08[idx].precio * arr_prtb08[idx].cantidad) - monto_desc
LET arr_prtb08[idx].total_p = total1
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 BY NAME p_totales.sub_total,p_totales.unidad_med
DISPLAY BY NAME prtb08.itbis
DISPLAY BY NAME p_totales.total_v
CALL SET_COUNT(IDX-1)
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 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
LET cuenta = arr_count()
END FUNCTION
REPORT o_pedido(xnumero,z,y)
DEFINE z RECORD
fila SMALLINT,
area 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,
descrip_esp LIKE iptb00002.descrip_esp,
unidad_med LIKE iptb00002.unidad_med,
altura_zocalo LIKE prtb00013.altura_zocalo,
terminacion LIKE prtb00013.terminacion,
bisel LIKE prtb00013.bisel,
cantidad_1 DEC(12,5),
cantidad LIKE prtb00013.cantidad,
precio LIKE prtb00013.precio,
descuento LIKE prtb00013.descuento,
total_p DECIMAL(10,2)
END RECORD,
y RECORD LIKE prtb00014.*,
i,xnumero,xkit INTEGER,
normal,comp_on,comp_off,doce,negrillas_on,negrillas_off,
doble_on,doble_off CHAR(2),raya CHAR(120),rayita CHAR(35),
total_inst DEC(8,2),
ult_pago INTEGER,
plado1,plado2,plado3,pcantidad,pmedida,total_unidades DEC(12,5),
etiqueta,prnc,ptelefono,xnumrnc CHAR(20),
descrip_area CHAR(40)
OUTPUT
LEFT MARGIN 0
FORMAT
PAGE HEADER
IF tipoimpresion = "MA" THEN
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
END IF
SELECT a.* INTO p_compania.* FROM companias a
LET l = (90 - LENGTH(p_compania.nombre CLIPPED))/2
PRINT comp_on
PRINT COLUMN l, p_compania.nombre CLIPPED,
COLUMN 72, TODAY USING "DD/MM/YYYY"
LET l = (100 - LENGTH("ORDEN PEDIDOS"))/2
PRINT COLUMN l, "ORDEN PEDIDOS",
COLUMN 72, TIME
LET prnc ="RNC:",p_compania.rnc
LET l = (90 - LENGTH(prnc))/2
PRINT COLUMN l, prnc
LET l = (90 - LENGTH(p_compania.direccion))/2
PRINT COLUMN l, p_compania.direccion
LET ptelefono = p_compania.telefono
LET l = (90 - LENGTH(ptelefono))/2
PRINT COLUMN l, ptelefono
IF nuevo = "N" THEN
PRINT COLUMN l, "ACTUALIZADA"
ELSE
PRINT " "
END IF
LET xnumrnc = NULL
SELECT a.num_rnc INTO xnumrnc FROM vetb00004 a
WHERE a.tipo_cliente = prtb08.tipo_cliente AND
a.sec_cliente = prtb08.sec_cliente
PRINT COLUMN 001, "ORDEN NO. : ",doble_on,xnumero USING "<<<<<<",doble_off
PRINT COLUMN 1, "TIPO ORDEN : ",prtb08.tipo_orden
PRINT COLUMN 1, "ORDEN RELACIONADA : ",prtb08.num_oc_r USING "&&&&&&&"
PRINT COLUMN 001, "Fecha de la Orden : ",prtb08.fecha_oc USING "DD/MMM/YYYY",
COLUMN 62, "Fecha de Entrega : ",prtb08.fecha_entrega USING "DD/MM/YYYY"
# Busca el ultimo pago realizado
LET ult_pago = NULL
SELECT MAX(a.num_doc) INTO ult_pago
FROM cctb00001 a
WHERE a.tipo_doc IN ("AV","PG") AND
a.tipo_cliente = prtb08.tipo_cliente AND
a.sec_cliente = prtb08.sec_cliente AND
a.status_t IS NULL
PRINT COLUMN 001, "CLIENTE : ",nombre CLIPPED
PRINT COLUMN 001, "CODIGO CLIENTE : ",prtb08.tipo_cliente USING "&&","-",
prtb08.sec_cliente USING "&&&&&&&&"
PRINT COLUMN 001,"NUMERO RNC : ",xnumrnc
PRINT COLUMN 001, "Direccion : ",prtb08.direccion CLIPPED,
COLUMN 62, "Ubicacion : ", prtb08.ubicacion CLIPPED
PRINT COLUMN 1, "Proyecto : ",pnombre_proyecto CLIPPED
PRINT COLUMN 001, "Telefono : ",prtb08.telefono CLIPPED,
COLUMN 62, "Fax : ",prtb08.fax CLIPPED
PRINT COLUMN 001, "Condiciones : ", descrip_p CLIPPED,
COLUMN 62, "Vendedor : ", prtb08.sec_vend USING "<<<<"," ",
nombres CLIPPED," ",apellidos CLIPPED
PRINT COLUMN 1, "COTIZACION NO. : ", prtb08.cotizacion_no USING "&&&&&&",
2 SPACES, "Documento Referencia : ",documento_ref
FOR i = 1 TO 120
LET raya[i] = "-"
END FOR
FOR i = 1 TO 35
LET rayita[i] = "-"
END FOR
# PRINT "Nombre Archivo dibujo: ",parchivo
PRINT doce
PRINT raya
PRINT COLUMN 033, "|ALTURA",
COLUMN 040, "|TERMINACION",
COLUMN 64,"|CANTIDAD"
PRINT COLUMN 001, " CODIGO ",
COLUMN 012, "|DESCRIPCION",
COLUMN 033, "|ZOCALO|",
# COLUMN 047, "|TERMINACION",
COLUMN 048, "|BISEL",
COLUMN 55, "|UNID.",
COLUMN 64, "|UNIDADES",
COLUMN 78, "|CANTIDAD",
COLUMN 91, "|PRECIO",
COLUMN 101, "|%DESC.",
COLUMN 108, " |TOTAL"
PRINT raya
BEFORE GROUP OF z.area
SELECT a.nombre_Area INTO descrip_Area FROM prtb00016 a
WHERE a.area_num = z.area
PRINT "AREA: ",descrip_area CLIPPED
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
{ LET z.cantidad_1 = 0
SELECT AVG(a.cantidad_1) INTO z.cantidad_1 FROM prtb00023 a
WHERE a.num_oc = xnumero AND
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 1, z.cod_n USING "&&&","-",z.cod_grupo USING "&&&&","-",
z.cod_tipo USING "&&&&&","-",z.cod_sec USING "&&&&&&&"," ",
COLUMN 12, z.descrip_esp wordwrap right margin 40,
COLUMN 36, z.altura_zocalo USING "&.&&",
COLUMN 46, z.terminacion,
COLUMN 50, z.bisel CLIPPED,
COLUMN 57, p_totales.unidad_med clipped,
COLUMN 63, z.cantidad_1 USING "##,###.####",
COLUMN 75, z.cantidad USING "#,###,###.#&&&"
#COLUMN 87, z.precio USING "#,###,###.#&",
#COLUMN 99, z.descuento USING "###.&&",
#COLUMN 106, z.total_p USING "##,###,###.&&"
IF prtb08.fecha_oc <= '26/12/2011' THEN
DECLARE busca_d1 CURSOR FOR
SELECT a.etiqueta,a.lado_1,a.lado_2,a.lado_3,a.cantidad,a.medida
FROM prtb00022 a
WHERE #a.secuencia = z.fila AND
a.area = z.area and
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 AND
a.num_oc = xnumero
LET total_unidades = 0
FOREACH busca_d1 INTO etiqueta,plado1,plado2,plado3,pcantidad,pmedida
PRINT COLUMN 5,pcantidad USING "<,<<<"," ",etiqueta clipped," DE ",plado1 USING "<<.#####"," X ",
plado2 USING "<<.#####"," X ",plado3 USING "<<.#####"," = ",pmedida USING "<<<.#####"
LET total_unidades = total_unidades + pcantidad
END FOREACH
ELSE
DECLARE busca_d2 CURSOR FOR
SELECT b.descripcion,a.lado_1,a.lado_2,a.lado_3,a.cantidad,a.medida
FROM prtb00022 a,vetb00026 b
WHERE #a.secuencia = z.fila AND
a.area = z.area and
a.etiqueta = b.codid AND
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 AND
a.num_oc = xnumero
LET total_unidades = 0
FOREACH busca_d2 INTO etiqueta,plado1,plado2,plado3,pcantidad,pmedida
PRINT COLUMN 5,pcantidad USING "<,<<<"," ",etiqueta clipped," DE ",plado1 USING "<<.#####"," X ",
plado2 USING "<<.#####"," X ",plado3 USING "<<.#####"," = ",pmedida USING "<<<.#####"
LET total_unidades = total_unidades + pcantidad
END FOREACH
END IF
IF total_unidades > 0 THEN
PRINT COLUMN 19, "TOTAL UNIDADES ",total_unidades USING "<,<<<"
END IF
ON LAST ROW
# Control Despachos Parciales
SELECT unique a.num_oc FROM prtb00015 a
WHERE a.num_oc = xnumero
IF STATUS != NOTFOUND THEN
PRINT rayita
PRINT "DESPACHOS PARCIALES"
PRINT COLUMN 1, "CODIGOS",
COLUMN 15, "CANTIDAD",
COLUMN 26, "FECHA"
PRINT rayita
DECLARE busca_p CURSOR FOR
SELECT ' ',a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.cantidad,a.fecha
FROM prtb00015 a
WHERE a.num_oc = xnumero
LET idx = 1
FOREACH busca_p INTO prtb15[idx].*
PRINT COLUMN 1,prtb15[idx].cod_n USING "&","-",
prtb15[idx].cod_grupo USING "&","-",
prtb15[idx].cod_tipo USING "&&","-",
prtb15[idx].cod_sec USING "&&&",
COLUMN 15, prtb15[idx].cantidad USING "##,###.##",
COLUMN 26, prtb15[idx].fecha USING "dd/mm/yyyy"
LET idx = idx + 1
END FOREACH
END IF
PRINT raya
{ ESTO SE PUSO EN COMENTARIO PARA QUE NO SALGA EL PRECIO EN LA ORDEN
PRINT COLUMN 060, "Total Material",
COLUMN 106, 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 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 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
SKIP 2 LINES
PRINT COLUMN 003, y.observacion wordwrap right margin 50
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," AND a.tipo_cliente = ",prtb08.tipo_cliente,
" ORDER BY a.nombre "
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
# CALL ui.combobox.setdefaultinitializer("cventas")
# CALL ui.combobox.setdefaultinitializer("ccondicion")
SELECT a.descripcion INTO descrip_ventas FROM vetb00061 a
WHERE a.ventas = prtb08.ventas
SELECT a.descrip INTO descrip_p
FROM vetb00012 a
WHERE a.cond_pago = prtb08.cond_pago AND
a.status_t IS NULL
DISPLAY descrip_p TO cond_pago
DISPLAY BY NAME nombre,descrip_ventas ATTRIBUTE(BLUE)
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,
prtb08.cotizacion_no 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 = 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
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 oc_detalles()
OPEN WINDOW wobserva AT 14,2 WITH FORM "prfmwd002" ATTRIBUTE (BORDER,FORM LINE FIRST +1)
INITIALIZE p_prtb14.* TO NULL
SELECT a.* INTO p_prtb14.* FROM prtb00014 a WHERE a.num_oc = prtb08.num_oc
IF p_prtb14.observacion IS NULL THEN
SELECT a.comentario iNTO p_prtb14.observacion FROM vetb00050 a
WHERE a.cotizacion_no = prtb08.cotizacion_no
END IF
INPUT BY NAME p_prtb14.observacion WITHOUT DEFAULTS
CLOSE WINDOW wobserva
END FUNCTION
FUNCTION parciales()
OPEN WINDOW wdparciales AT 14,2 WITH FORM "prfmwd003"
ATTRIBUTE (BORDER,FORM LINE FIRST +1)
FOR idx = 1 TO 10
LET prtb15[idx].num_oc = NULL
LET prtb15[idx].cod_n = NULL
LET prtb15[idx].cod_grupo = NULL
LET prtb15[idx].cod_tipo = NULL
LET prtb15[idx].cod_sec = NULL
LET prtb15[idx].fecha = NULL
LET prtb15[idx].cantidad = NULL
END FOR
LET prtb15[1].num_oc = prtb08.num_oc
LET prtb15[1].cod_n = arr_prtb08[curr].cod_n
LET prtb15[1].cod_grupo = arr_prtb08[curr].cod_grupo
LET prtb15[1].cod_tipo = arr_prtb08[curr].cod_tipo
LET prtb15[1].cod_sec = arr_prtb08[curr].cod_sec
LET prtb15[1].fecha = today
LET prtb15[1].cantidad = arr_prtb08[curr].cantidad
INPUT ARRAY prtb15 WITHOUT DEFAULTS FROM sprtb15.*
IF int_flag THEN
LET int_flag = FALSE
LET numero_msg = 2
CALL msg(numero_msg)
GOTO salir
END IF
LET cuenta_p = ARR_COUNT()
LABEL salir:
CLOSE WINDOW wdparciales
END FUNCTION
FUNCTION codigoRepite()
DEFINE ant_art RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
precio DEC(12,3)
END RECORD
LET ant_art.cod_n = arr_prtb08[ridx].cod_n
LET ant_art.cod_grupo = arr_prtb08[ridx].cod_grupo
LET ant_art.cod_tipo = arr_prtb08[ridx].cod_tipo
LET ant_art.cod_sec = arr_prtb08[ridx].cod_sec
LET ant_art.precio = arr_prtb08[ridx].precio
FOR idx = 1 TO arr_count()
IF idx != ridx THEN
IF arr_prtb08[idx].cod_n = ant_art.cod_n AND
arr_prtb08[idx].cod_grupo = ant_art.cod_grupo AND
arr_prtb08[idx].cod_tipo = ant_art.cod_tipo AND
arr_prtb08[idx].cod_sec = ant_art.cod_sec AND
arr_prtb08[idx].precio = ant_art.precio THEN
LET numero_msg = 21
CALL msg(numero_msg)
LET bandera = 1
EXIT FOR
END IF
END IF
END FOR
END FUNCTION
FUNCTION despiece()
OPEN WINDOW wdespiece AT 5,3 WITH FORM "prfmwd004" ATTRIBUTE (BORDER,FORM LINE
FIRST + 1,PROMPT LINE LAST)
DISPLAY BY NAME descrip_esp
DISPLAY BY NAME p_totales.unidad_med
IF nuevo = "S" THEN
CALL despiece.clear()
DECLARE busca_despiece CURSOR FOR
SELECT a.etiqueta,a.area, a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,
a.lado_1,a.lado_2,a.lado_3,a.cantidad,a.medida
FROM prtb00022 a
WHERE a.num_oc = tmpnumero AND
# a.secuencia = arr_prtb08[curr].fila AND
a.area = arr_prtb08[curr].area 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
LET idx = 1
FOREACH busca_despiece INTO despiece[idx].*
LET idx = idx + 1
END FOREACH
ELSE
CALL despiece.clear()
DECLARE mbusca_despiece CURSOR FOR
SELECT a.etiqueta,a.area, a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,
a.lado_1,a.lado_2,a.lado_3,a.cantidad,a.medida
FROM prtb00022 a
WHERE a.num_oc = prtb08.num_oc AND
#a.secuencia = arr_prtb08[curr].fila AND
a.area = arr_prtb08[curr].area 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
LET idx = 1
FOREACH mbusca_despiece INTO despiece[idx].*
LET idx = idx + 1
END FOREACH
END IF
LET despiece[1].cod_n = arr_prtb08[curr].cod_n
LET despiece[1].area = arr_prtb08[curr].area
LET despiece[1].cod_grupo = arr_prtb08[curr].cod_grupo
LET despiece[1].cod_tipo = arr_prtb08[curr].cod_tipo
LET despiece[1].cod_sec = arr_prtb08[curr].cod_sec
CALL set_count(idx-1)
INPUT ARRAY despiece WITHOUT DEFAULTS FROM sdespiece.*
BEFORE ROW
LET curr1 = arr_curr()
LET fila = scr_line()
CALL cetiquetas()
LET despiece[curr1].cod_n = arr_prtb08[curr].cod_n
LET despiece[curr1].cod_grupo = arr_prtb08[curr].cod_grupo
LET despiece[curr1].cod_tipo = arr_prtb08[curr].cod_tipo
LET despiece[curr1].cod_sec = arr_prtb08[curr].cod_sec
IF curr1 > 1 THEN
IF despiece[curr1].etiqueta IS NULL THEN
LET despiece[curr1].etiqueta = despiece[curr1-1].etiqueta
END IF
END IF
DISPLAY despiece[curr1].etiqueta TO sdespiece[fila].etiqueta
DISPLAY arr_prtb08[curr].cod_n TO sdespiece[fila].cod_n
DISPLAY arr_prtb08[curr].cod_grupo TO sdespiece[fila].cod_grupo
DISPLAY arr_prtb08[curr].cod_tipo TO sdespiece[fila].cod_tipo
DISPLAY arr_prtb08[curr].cod_sec TO sdespiece[fila].cod_sec
AFTER FIELD cantidad
IF p_totales.unidad_med= "M2" THEN
LET despiece[curr1].medida =
despiece[curr1].cantidad * (despiece[curr1].lado_1 * despiece[curr1].lado_2)
END IF
IF p_totales.unidad_med= "M3" THEN
LET despiece[curr1].medida =
despiece[curr1].cantidad * (despiece[curr1].lado_1 * despiece[curr1].lado_2 * despiece[curr1].lado_3)
END IF
IF p_totales.unidad_med= "ML" THEN
LET despiece[curr1].medida =
despiece[curr1].cantidad * despiece[curr1].lado_1
LET despiece[curr1].lado_2 = 0
END IF
IF p_totales.unidad_med= "UD" OR p_totales.unidad_med= "GL" THEN
LET despiece[curr1].medida = despiece[curr1].cantidad
END IF
DISPLAY despiece[curr1].medida TO sdespiece[fila].medida
AFTER ROW
IF despiece[curr1].cantidad IS NOT NULL AND despiece[curr1].etiqueta IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD etiqueta
END IF
IF despiece[curr1].medida IS NULL AND
despiece[curr1].lado_1 IS NOT NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD lado_1
END IF
LET total_medida = 0
FOR idx = 1 TO arr_count()
IF despiece[idx].medida IS NOT NULL THEN
LET total_medida = total_medida + despiece[idx].medida
END IF
END FOR
DISPLAY BY NAME total_medida
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
EXIT INPUT
END IF
LET total_medida = 0
FOR idx = 1 TO arr_count()
IF despiece[idx].medida IS NOT NULL THEN
LET total_medida = total_medida + despiece[idx].medida
END IF
END FOR
DISPLAY BY NAME total_medida
END INPUT
IF int_flag THEN
LET int_flag = FALSE
CLOSE WINDOW wdespiece
RETURN
END IF
# CONTROL NUMERICO
IF nuevo <> "S" THEN
LET tmpnumero = prtb08.num_oc
END IF
DELETE FROM PRTB00022 WHERE num_oc = tmpnumero AND
secuencia = arr_prtb08[curr].fila AND
area = arr_prtb08[curr].area AND
cod_n = arr_prtb08[curr].cod_n AND
cod_grupo = arr_prtb08[curr].cod_grupo AND
cod_tipo = arr_prtb08[curr].cod_tipo AND
cod_sec = arr_prtb08[curr].cod_sec
LET total_medida = 0
FOR idx = 1 TO arr_count()
IF despiece[idx].medida IS NOT NULL THEN
INSERT INTO PRTB00022 VALUES (despiece[idx].etiqueta,tmpnumero,arr_prtb08[curr].fila,
arr_prtb08[curr].area,
arr_prtb08[curr].cod_n,arr_prtb08[curr].cod_grupo,
arr_prtb08[curr].cod_tipo,arr_prtb08[curr].cod_sec,
despiece[idx].lado_1,despiece[idx].lado_2,
despiece[idx].lado_3,despiece[idx].cantidad,
despiece[idx].medida,null,SUSER_SNAME(),GETDATE(),null,null)
LET total_medida = total_medida + despiece[idx].medida
END IF
END FOR
LET arr_prtb08[curr].cantidad_1 = total_medida
CLOSE WINDOW wdespiece
END FUNCTION
FUNCTION controlact()
# CONTROL AVANCES
SELECT UNIQUE a.num_cheque FROM cctb00001 a WHERE a.num_cheque = prtb08.num_oc and tipo_doc = "AV" and
a.num_doc = a.aplica_a and a.tipo_cliente = prtb08.tipo_cliente and
a.sec_cliente = prtb08.sec_cliente and a.status_t is null
IF STATUS <> NOTFOUND THEN
LET cliente1 = "S"
END IF
# CONTROL INVENTARIO
SELECT UNIQUE a.conduce_no
FROM iptb00006 a
WHERE a.conduce_no = prtb08.num_oc and
a.status_t IS NULL AND fech_Crea > '09/01/2009'
IF STATUS <> NOTFOUND THEN
LET conduce = "S"
END IF
END FUNCTION
FUNCTION cventas(pventas)
DEFINE pventas ui.combobox,
kventas smallint,
pdescrip CHAR(30)
CALL pventas.clear()
DECLARE bventas CURSOR FOR
SELECT a.ventas,a.descripcion FROM vetb00061 a
ORDER BY a.ventas
FOREACH bventas INTO kventas,pdescrip
CALL pventas.additem(kventas,pdescrip)
END FOREACH
END FUNCTION
FUNCTION ccondicion(pcondicion)
DEFINE pcondicion ui.combobox,kcondicion SMALLINT,kdescripcion CHAR(30)
CALL pcondicion.clear()
DECLARE busca_cond CURSOR FOR
SELECT a.cond_pago,a.descrip FROM vetb00012 a
WHERE a.status_t IS NULL
ORDER BY a.descrip
FOREACH busca_cond INTO kcondicion,kdescripcion
CALL pcondicion.additem(kcondicion,kdescripcion)
END FOREACH
END FUNCTION
FUNCTION ccodn()
DEFINE arr_busca DYNAMIC ARRAY OF RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_Sec SMALLINT,
descrip_esp CHAR(30),
unidad_med CHAR(4)
END RECORD
OPEN WINDOW w1 WITH FORM "prfmwd013"
CONSTRUCT BY NAME criterio ON a.descrip_esp
LET selec =
"SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,a.descrip_esp,a.unidad_med FROM iptb00002 a ",
" WHERE a.status_t IS NULL AND ",criterio CLIPPED,
"ORDER BY a.descrip_esp "
PREPARE comando FROM selec
DECLARE busca_codn CURSOR FOR comando
LET idx = 1
FOREACH busca_codn INTO arr_busca[idx].*
LET idx = idx + 1
END FOREACH
CALL set_count(idx)
DISPLAY ARRAY arr_busca TO s_codigos.*
AFTER DISPLAY
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
EXIT DISPLAY
END IF
LET idx = arr_curr()
LET arr_prtb08[curr].cod_n = arr_busca[idx].cod_n
LET arr_prtb08[curr].cod_grupo = arr_busca[idx].cod_grupo
LET arr_prtb08[curr].cod_tipo = arr_busca[idx].cod_tipo
LET arr_prtb08[curr].cod_sec = arr_busca[idx].cod_sec
LET arr_prtb08[curr].descrip_esp = arr_busca[idx].descrip_esp
LET arr_prtb08[curr].unidad_med = arr_busca[idx].unidad_med
EXIT DISPLAY
END DISPLAY
CLOSE WINDOW w1
END FUNCTION
FUNCTION prpcad008_r()
## Captura los datos que va a contener el registro
LET INT_FLAG = false
LABEL vuelve:
IF nuevo = "S" THEN
# INITIALIZE prtb08.* TO NULL
LET prtb08.num_oc = 0
LET prtb08.fecha_entrega = TODAY + 20
SELECT a.num_oc INTO tmpnumero FROM prtb00024 a
LET tmpnumero = tmpnumero + 1
UPDATE prtb00024 set num_oc = tmpnumero
LET prtb08.fecha_oc = TODAY
DISPLAY BY NAME prtb08.fecha_oc ATTRIBUTE(BLUE)
INPUT BY NAME prtb08.num_oc_r,prtb08.cotizacion_no,documento_ref,prtb08.num_oc,prtb08.fecha_oc,
prtb08.tipo_cliente,prtb08.sec_cliente,prtb08.sec_vend,
prtb08.fecha_entrega,
prtb08.ubicacion WITHOUT DEFAULTS
AFTER FIELD sec_cliente
IF prtb08.sec_cliente IS NOT NULL THEN
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 =70
CALL msg(numero_msg)
NEXT FIELD cotizacion_no
END IF
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 nombre,prtb08.direccion
END IF
AFTER FIELD sec_vend
IF prtb08.sec_vend 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
CALL msg(3)
NEXT FIELD sec_vend
END IF
LET nombre_vend = nombres CLIPPED," ",apellidos CLIPPED
DISPLAY BY NAME nombre_Vend
END IF
AFTER FIELD num_oc_r
SELECT a.cotizacion_no,a.tipo_cliente,a.sec_cliente,a.sec_vend,a.cond_pago,b.nombre,a.ventas
INTO prtb08.cotizacion_no,prtb08.tipo_cliente,prtb08.sec_cliente,prtb08.sec_vend,prtb08.cond_pago,
nombre,prtb08.ventas
FROM prtb00012 a,vetb00004 b
WHERE a.num_oc = prtb08.num_oc_r AND
a.tipo_cliente = b.tipo_cliente AND
a.sec_cliente = b.sec_cliente AND
a.status_t IS NULL
IF STATUS = NOTFOUND THEN
CALL msg(3)
NEXT FIELD num_oc
END IF
SELECT a.nom1_Emp||' '||a.apell1_emp INTO nombre_Vend FROM adtb00003 a
WHERE a.num_emp = prtb08.sec_vend
DISPLAY BY NAME prtb08.cotizacion_no,prtb08.tipo_cliente,prtb08.sec_cliente,prtb08.sec_vend,nombre,nombre_vend
{ AFTER FIELD num_doc_retrabajo
IF num_doc_retrabajo IS NULL THEN
CALL msg(16)
NEXT FIELD num_doc_retrabajo
END IF
SELECT a.num_oc INTO prtb08.num_oc_r FROM svtb00007 a WHERE a.num_doc = num_doc_retrabajo AND a.status_t IS NULL
IF STATUS = NOTFOUND THEN
CALL msg(3)
NEXT FIELD num_doc_retrabajo
END IF
DISPLAY BY NAME prtb08.num_oc_r
IF prtb08.num_oc_r IS NULL THEN
CALL msg(16)
NEXT FIELD num_doc_retrabajo
END IF
SELECT a.tipo_cliente,a.sec_cliente,b.nombre,a.cotizacion_no
INTO prtb08.tipo_cliente,prtb08.sec_cliente,nombre,prtb08.cotizacion_no
FROM prtb00012 a,vetb00004 b
WHERE a.num_oc = prtb08.num_oc_r AND a.tipo_cliente = b.tipo_cliente AND a.sec_cliente = b.sec_cliente AND
a.status_t IS NULL
IF STATUS = NOTFOUND THEN
CALL msg(3)
NEXT FIELD num_oc_r
END IF
LET prtb08.tipo_orden = 'REPOSICION'
DISPLAY BY NAME prtb08.tipo_orden
DISPLAY BY NAME prtb08.tipo_cliente,prtb08.sec_cliente,prtb08.cotizacion_no,nombre
}
BEFORE INPUT
LET prtb08.cotizacion_no = NULL
LET prtb08.tipo_cliente = NULL
LET prtb08.sec_cliente =NULL
LET documento_ref = NULL
DISPLAY BY NAME prtb08.cotizacion_no,prtb08.tipo_cliente,prtb08.sec_cliente,documento_ref
BEFORE FIELD fecha_entrega
LET prtb08.fecha_entrega = prtb08.fecha_oc + 1
DISPLAY BY NAME prtb08.fecha_entrega
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
BEFORE FIELD fecha_oc
IF nuevo = "S" THEN
LET prtb08.fecha_oc = TODAY
DISPLAY BY NAME prtb08.fecha_oc ATTRIBUTE(BLUE)
END IF
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 INPUT
IF INT_FLAG THEN
LET opt4 = FGL_WINQUESTION("Pregunta","Esta seguro que desea salir del programa?","no","yes|no|cancel","question",0)
LET opt4 = UPSHIFT(opt4)
IF opt4 = "NO" THEN
LET INT_FLAG = FALSE
LET opt4 = NULL
CONTINUE INPUT
END IF
LET numero_msg = 2
CALL msg(numero_msg)
LET INT_FLAG = FALSE
RETURN
END IF
IF prtb08.fecha_oc IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cotizacion_no
END IF
# IF documento_ref IS NULL THEN
# LET numero_msg = 16
# CALL msg(numero_msg)
# NEXT FIELD documento_ref
# END IF
IF prtb08.sec_cliente IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD sec_cliente
END IF
END INPUT
END IF
IF nuevo = "S" THEN
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
CALL arr_prtb08.clear()
DECLARE busca_Detalle1 CURSOR FOR
SELECT '1',a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,b.descrip_esp,b.unidad_med,
' ',' ',' ','0',a.cantidad,'0','0'
FROM prtb00013 a,iptb00002 b
WHERE a.cod_n = b.cod_n and a.cod_grupo = b.cod_grupo and a.cod_tipo = b.cod_tipo and
a.cod_Sec = b.cod_Sec and
a.num_oc = prtb08.num_oc_r and
a.status_t is null
LET idx = 1
LET monto_desc = 0
LET total1 = 0
FOREACH busca_detalle1 INTO arr_prtb08[idx].*
LET arr_prtb08[idx].fila = idx
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 p_totales.sub_total = p_totales.sub_total + arr_prtb08[idx].total_p
SELECT UNIQUE a.factor_conv INTO factor_conv FROM iptb00001 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 arr_prtb08[idx].cantidad_1 = arr_prtb08[idx].cantidad / factor_conv
LET idx = idx + 1
END FOREACH
CALL set_count(idx-1)
DISPLAY BY NAME p_totales.sub_total
END IF
LET p_totales.sub_total = 0
INPUT ARRAY arr_prtb08 WITHOUT DEFAULTS FROM s_pedido.*
# ON KEY(F9)
# CALL parciales()
ON KEY(F10)
# CONTROL DESPIECE
IF control_despiece = 'SI' THEN
IF nuevo <> "S" THEN
SELECT UNIQUE a.cod_n FROM iptb00027 a
WHERE 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
IF STATUS != NOTFOUND THEN
SELECT UNIQUE a.cod_n FROM prtb00022 a
WHERE a.secuencia = arr_prtb08[curr].fila 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.num_oc = prtb08.num_oc
IF STATUS = NOTFOUND THEN
LET numero_msg =398
CALL msg(numero_msg)
CALL despiece()
SELECT UNIQUE a.factor_conv INTO factor_conv FROM iptb00001 a
WHERE 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
LET arr_prtb08[curr].cantidad = arr_prtb08[curr].cantidad_1 * factor_conv
DISPLAY arr_prtb08[curr].cantidad TO s_pedido[scr_l].cantidad
DISPLAY arr_prtb08[curr].cantidad_1 TO s_pedido[scr_l].cantidad_1
NEXT FIELD cantidad_1
END IF
ELSE
ERROR "ESTE PRODUCTO NO SE DESPIEZA"
NEXT FIELD cod_n
END IF
END IF
###---------------------------------------------------------------
END IF
IF control_Despiece = 'SI' THEN
CALL despiece()
END IF
SELECT UNIQUE a.factor_conv INTO factor_conv FROM iptb00001 a
WHERE 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
LET arr_prtb08[curr].cantidad = arr_prtb08[curr].cantidad_1 * factor_conv
DISPLAY arr_prtb08[curr].cantidad TO s_pedido[scr_l].cantidad
DISPLAY arr_prtb08[curr].cantidad_1 TO s_pedido[scr_l].cantidad_1
# NEXT FIELD cantidad_1
BEFORE ROW
LET curr = arr_curr()
LET scr_l = scr_line()
IF nuevo = "S" THEN
LET sub_total = 0
END IF
# CONTROL DESPIECE
SELECT UNIQUE a.cod_n FROM iptb00027 a
WHERE 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
IF STATUS <> NOTFOUND THEN
DISPLAY arr_prtb08[curr].cod_n TO s_pedido[scr_l].cod_n ATTRIBUTE(RED)
DISPLAY arr_prtb08[curr].cod_grupo TO s_pedido[scr_l].cod_grupo ATTRIBUTE(RED)
DISPLAY arr_prtb08[curr].cod_tipo TO s_pedido[scr_l].cod_tipo ATTRIBUTE(RED)
DISPLAY arr_prtb08[curr].cod_sec TO s_pedido[scr_l].cod_sec ATTRIBUTE(RED)
DISPLAY arr_prtb08[curr].descrip_esp TO s_pedido[scr_l].descrip_esp ATTRIBUTE(RED)
END IF
BEFORE FIELD cod_n
IF nuevo = "S" THEN
LET arr_prtb08[curr].fila = arr_curr()
DISPLAY arr_prtb08[curr].fila TO s_pedido[scr_l].fila
END IF
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
LET arr_prtb08[curr].descrip_esp = descrip_esp
LET arr_prtb08[curr].unidad_med = p_totales.unidad_med
DISPLAY arr_prtb08[curr].descrip_esp TO s_pedido[scr_l].descrip_esp
DISPLAY arr_prtb08[curr].unidad_med TO s_pedido[scr_l].unidad_med
IF control_despiece = 'SI' THEN
IF nuevo = "S" THEN
# CONTROL DESPIECE
SELECT UNIQUE a.cod_n FROM iptb00027 a
WHERE 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
IF STATUS != NOTFOUND THEN
CALL despiece()
SELECT UNIQUE a.factor_conv INTO factor_conv FROM iptb00001 a
WHERE 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
LET arr_prtb08[curr].cantidad = arr_prtb08[curr].cantidad_1 * factor_conv
DISPLAY arr_prtb08[curr].cantidad TO s_pedido[scr_l].cantidad
DISPLAY arr_prtb08[curr].cantidad_1 TO s_pedido[scr_l].cantidad_1
NEXT FIELD cantidad_1
END IF
###---------------------------------------------------------------
ELSE
# CONTROL DESPIECE
SELECT UNIQUE a.cod_n FROM iptb00027 a
WHERE 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
IF STATUS != NOTFOUND THEN
SELECT UNIQUE a.cod_n FROM prtb00022 a
WHERE a.secuencia = arr_prtb08[curr].fila 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.num_oc = prtb08.num_oc
IF STATUS = NOTFOUND THEN
LET numero_msg =398
CALL msg(numero_msg)
CALL despiece()
NEXT FIELD cod_n
END IF
END IF
END IF
END IF
### FACTOR CONVERSION
SELECT UNIQUE a.factor_conv INTO factor_conv FROM iptb00001 a
WHERE 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
ERROR "NO EXISTE FACTOR DE CONVERSION"
NEXT FIELD cod_n
END IF
# IF nuevo = "S" THEN
#LET arr_prtb08[curr].precio = p_costos1 ESTO ES PARA EL PRECIO
# END IF
DISPLAY arr_prtb08[curr].precio TO s_pedido[scr_l].precio
END IF
AFTER FIELD cantidad_1
IF arr_prtb08[curr].cantidad_1 IS NULL OR
arr_prtb08[curr].cantidad_1 < 0 THEN
LET arr_prtb08[curr].descuento = 0
END IF
LET arr_prtb08[curr].cantidad = arr_prtb08[curr].cantidad_1 * factor_conv
SELECT SUM(a.cantidad) INTO pcontrol FROM vetb00051 a
WHERE cotizacion_no = prtb08.cotizacion_no 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
IF arr_prtb08[curr].cantidad > pcontrol THEN
ERROR "CANTIDAD EXCEDE A CANTIDAD EN LA COTIZACION"
NEXT FIELD cantidad_1
END IF
DISPLAY arr_prtb08[curr].cantidad TO s_pedido[scr_l].cantidad
#CONTROL DESPIECE
SELECT UNIQUE a.cod_n FROM iptb00027 a
WHERE 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
IF STATUS != NOTFOUND THEN
SELECT SUM(a.medida) INTO pcontrol FROM prtb00022 a
WHERE a.secuencia = arr_prtb08[curr].fila 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.num_oc = prtb08.num_oc
IF STATUS = NOTFOUND THEN
LET numero_msg =398
CALL msg(numero_msg)
CALL despiece()
NEXT FIELD cod_n
END IF
END IF
AFTER ROW
IF arr_prtb08[curr].cod_sec iS NOT NULL THEN
LET arr_prtb08[curr].total_p = arr_prtb08[curr].cantidad *
arr_prtb08[curr].precio
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
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
END IF
AFTER INPUT
IF INT_FLAG THEN
LET opt4 = FGL_WINQUESTION("Pregunta","Esta seguro que desea salir del programa?","no","yes|no|cancel","question",0)
LET opt4 = UPSHIFT(opt4)
IF opt4 = "NO" THEN
LET INT_FLAG = FALSE
LET opt4 = NULL
CONTINUE INPUT
END IF
LET numero_msg = 2
CALL msg(numero_msg)
# DELETE FROM prtb00022 where num_oc = tmpnumero
LET INT_FLAG = FALSE
RETURN
END IF
{ # CALCULO DE LOS TOTALES
LET p_totales.sub_total = 0
LET scr_l = scr_line()
FOR idx = 1 TO arr_count()
# IF arr_prtb08[idx].total_p IS NULL THEN
IF arr_prtb08[idx].precio IS NOT NULL OR
arr_prtb08[idx].cantidad IS NOT NULL THEN
IF arr_prtb08[idx].precio = 0 THEN
LET numero_msg = 207
CALL msg(numero_msg)
CONTINUE INPUT
END IF
LET monto_desc = (arr_prtb08[idx].precio * arr_prtb08[idx].cantidad) *
(arr_prtb08[idx].descuento /100)
IF monto_Desc IS NULL THEN
LET monto_Desc = 0
END IF
LET arr_prtb08[idx].total_p = (arr_prtb08[idx].cantidad *
arr_prtb08[idx].precio)-
monto_desc
IF arr_prtb08[idx].total_p IS NOT NULL THEN
IF p_totales.sub_total IS NULL THEN
LET p_totales.sub_total = 0
END IF
LET p_totales.sub_total = p_totales.sub_total + arr_prtb08[idx].total_p
DISPLAY BY NAME p_totales.sub_total
END IF
END IF
DISPLAY arr_prtb08[idx].total_p TO s_pedido[scr_l].total_p
# END IF
# IF arr_prtb08[idx].total_p IS NOT NULL THEN
LET bandera = 0
LET ridx = idx
# END IF
END FOR
DISPLAY BY NAME p_totales.sub_total
IF p_totales.sub_total IS NULL OR p_totales.sub_total = 0 THEN
LET numero_msg =207
CALL msg(numero_msg)
# CONTINUE INPUT
END IF
}
#-> Registra las observaciones de la orden corte vg Tuesday, 13 March, 2001 11:08:14 AM
CALL oc_detalles()
EXIT INPUT
END INPUT
LET arrcuenta = arr_count()
# LET p_totales.total_v = p_totales.sub_total
# DISPLAY BY NAME p_totales.sub_total,p_totales.total_v
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)
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 <> 17 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
LABEL correcto:
LET opt4 = FGL_WINQUESTION("Pregunta","Toda La informacion Esta Correcta","yes","yes|no|cancel","question",0)
# PROMPT "TODA LA INFORMACION ESTA CORRECTA? " FOR opt4
LET opt4 = upshift(opt4)
IF opt4 IS NULL THEN
go to correcto
END IF
LET prtb08.tipo_orden = 'REPOSICION'
IF opt4 = "YES" THEN
# SE COLOCO QUE EL NUMERO SE GENERARA A PARTIR DEL 01/01/2003 HACIA ATRAS POR MODIFICACION DEL
# SISTEMA Y LA INCLUSION DEL NCF A PARTIR DEL 01/01/2007
# FECHA MODIFICACION: 11/01/2007
SELECT num_oc INTO ult_numero FROM prtb00020
IF nuevo = "S" THEN
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
UPDATE prtb00020 set num_oc = ult_numero,
us_crea = SUSER_SNAME(),
fech_crea = GETDATE()
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia1
LET HANDLER = configureoutput("PDF")
START REPORT o_pedido TO XML HANDLER handler
END IF
#LET prtb08.nombre_file = parchivo 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
IF nuevo = "S" THEN
LET prtb08.cerrada = "N"
LET Prtb08.nombre_file = documento_ref
# ACTUALIZACION BASE DE DASTOS MSSQL
INSERT INTO prtb00012
(ventas
,cotizacion_no
,num_oc
,fecha_oc
,nombre_file
,sec_vend
,tipo_cliente
,sec_cliente
,direccion
,telefono
,fax
,fecha_entrega
,cond_pago
,cantidad_i
,precio_i
,cantidad_mo
,precio_mo
,transporte
,itbis
,ubicacion
,cerrada
,fecha_cierre
,us_crea
,fech_crea
,tipo_orden
,num_oc_r
,num_doc_retrabajo
)
VALUES
(prtb08.ventas
,prtb08.cotizacion_no
,prtb08.num_oc
,prtb08.fecha_oc
,prtb08.nombre_file
,prtb08.sec_vend
,prtb08.tipo_cliente
,prtb08.sec_cliente
,prtb08.direccion
,prtb08.telefono
,prtb08.fax
,prtb08.fecha_entrega
,prtb08.cond_pago
,prtb08.cantidad_i
,prtb08.precio_i
,prtb08.cantidad_mo
,prtb08.precio_mo
,prtb08.transporte
,prtb08.itbis
,prtb08.ubicacion
,prtb08.cerrada
,prtb08.fecha_cierre
,usuarios
,getdate()
,prtb08.tipo_orden
,prtb08.num_oc_r
,num_doc_retrabajo
)
DELETE FROM prtb00014 WHERE num_oc = prtb08.num_oc
INSERT INTO prtb00014 VALUES (prtb08.num_oc,p_prtb14.observacion,NULL,SUSER_SNAME(),GETDATE(),NULL,NULL)
INSERT INTO prtb00009 (num_oc,fecha,detalle,us_crea,fech_crea) VALUES (prtb08.num_oc,prtb08.fecha_oc,'CREACION ORDEN',usuarios,getdate())
UPDATE prtb00012 SET us_crea = SUSER_SNAME(),
fech_crea = GETDATE()
WHERE @num_oc = prtb08.num_oc
UPDATE prtb00009 SET us_crea = SUSER_SNAME(),
fech_crea = GETDATE()
WHERE @num_oc = prtb09.num_oc
UPDATE prtb00020 SET num_oc = ult_numero,
us_Crea = SUSER_SNAME(),
fech_crea = GETDATE()
# ACTUALIZA NUMERO TEMPORAL PARA EL DESPIECE
UPDATE prtb00022 SET num_oc = prtb08.num_oc WHERE num_oc = tmpnumero
UPDATE prtb00024 SET num_oc = num_oc + 1
# 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_prtb08.getLength()
IF arr_prtb08[idx].cantidad IS NOT NULL THEN
INSERT INTO prtb00013 (num_oc,secuencia,area,cod_n,cod_grupo,cod_tipo,cod_Sec,altura_zocalo,
terminacion,bisel,precio,cantidad,descuento,us_crea,fech_crea)
VALUES (prtb08.num_oc,arr_prtb08[idx].fila,
arr_prtb08[idx].area,
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,
usuarios,GETDATE())
INSERT INTO prtb00023 (num_oc,secuencia,area,cod_n,cod_grupo,cod_tipo,cod_Sec,cantidad_1,cantidad)
VALUES (prtb08.num_oc,
arr_prtb08[idx].fila,
arr_prtb08[idx].area,
arr_prtb08[idx].cod_n,
arr_prtb08[idx].cod_grupo,
arr_prtb08[idx].cod_tipo,
arr_prtb08[idx].cod_sec,
arr_prtb08[idx].cantidad_1,
arr_prtb08[idx].cantidad)
OUTPUT TO REPORT o_pedido(prtb08.num_oc,arr_prtb08[idx].*,p_prtb14.*)
END IF
END FOR
# EVALUA LA SITUACION DEL CLIENTE PARA HACER LA REQUISICION DE DESPACHO Y AUTORIZARLA
# AUTOMATICAMENTE
#IF evaluaclientes(prtb08.tipo_cliente,prtb08.sec_cliente,prtb08.cond_pago,monto_cotiza) THEN
# LET procede = fgl_winquestion("REQUISICION","ESTE CLIENTE ES ELEGIBLE PARA HACER REQUSICION AUTOMATICA, DESEA HACER ESTE DOCUEMTNO?","YES","YES|NO","QUESTION",0)
# IF procede = "YES" THEN
# CALL requisiciondespacho(prtb08.*)
# END IF
#END IF
{ se puso en comentario porque me estaba dando error al momento de introducir los datos}
#INSERT INTO prtb00009 (num_oc,fecha,fecha_fabricacion,pendiente,detalle,us_crea,fech_crea)
# VALUES (prtb09.num_oc,prtb09.fecha,prtb09.fecha_fabricacion,prtb09.pendiente,prtb09.detalle,SUSER_SNAME(),GETDATE())
# Actualizacion Parcialidades
FOR idx = 1 TO cuenta_p
INSERT INTO prtb00015 VALUES (prtb08.num_oc,
prtb15[idx].area,
prtb15[idx].cod_n,
prtb15[idx].cod_grupo,
prtb15[idx].cod_tipo,
prtb15[idx].cod_sec,
prtb15[idx].cantidad,
prtb15[idx].fecha,
null,SUSER_SNAME(),GETDATE())
END FOR
FINISH REPORT o_pedido
RUN imprime
LET archivo1 = archivo
CALL defecto(usuarios,clave,copia) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia1
LET cmd = "TYPE ",archivo1 CLIPPED," ",copia1
DISPLAY cmd CLIPPED
RUN cmd
#------------------------------ FIN MSSQL-------------------------------------
ELSE
# ACTUALIZACION DE LA ORDEN
UPDATE prtb00012 SET prtb00012.* = prtb08.* WHERE prtb00012.num_oc = prtb08.num_oc
UPDATE prtb00014 SET (observacion,us_mod,fech_mod)=
(p_prtb14.observacion,SUSER_SNAME(),GETDATE()) WHERE prtb00014.num_oc = p_prtb14.num_oc
UPDATE prtb00012 SET us_mod = SUSER_SNAME(),
fech_mod= GETDATE()
WHERE @num_oc = prtb08.num_oc
#LET archivo = FGL_GETENV("USORDEN")
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia
START REPORT o_pedido TO archivo
DELETE FROM prtb00013 WHERE Num_oc = prtb08.num_oc
DELETE FROM prtb00023 WHERE Num_oc = prtb08.num_oc
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].fila,
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,SUSER_SNAME(),GETDATE(),null,null)
INSERT INTO prtb00023 VALUES (prtb08.num_oc,arr_prtb08[idx].fila,
arr_prtb08[idx].cod_n,
arr_prtb08[idx].cod_grupo,
arr_prtb08[idx].cod_tipo,
arr_prtb08[idx].cod_sec,
arr_prtb08[idx].cantidad_1,
arr_prtb08[idx].cantidad)
OUTPUT TO REPORT o_pedido(prtb08.num_oc,arr_prtb08[idx].*,p_prtb14.*)
END IF
END FOR
DELETE FROM prtb00015 WHERE num_oc = prtb08.num_oc
# Actualizacion Parcialidades
FOR idx = 1 TO cuenta_p
INSERT INTO prtb00015 VALUES (prtb08.num_oc,
prtb15[idx].cod_n,
prtb15[idx].cod_grupo,
prtb15[idx].cod_tipo,
prtb15[idx].cod_sec,
prtb15[idx].cantidad,
prtb15[idx].fecha,
null,SUSER_SNAME(),GETDATE())
END FOR
FINISH REPORT o_pedido
{LET cmd ="TYPE ", archivo CLIPPED," > ",FGL_GETENV("USPRINTO")
DISPLAY "IMP ",cmd
RUN cmd
LET cmd ="TYPE ", archivo CLIPPED," > ",FGL_GETENV("USPRINTO1")
RUN cmd
}
RUN imprime
LET impresor = copia
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia
LET cmd = "TYPE ",archivo CLIPPED," ",copia
display "CMD ",cmd
RUN cmd
LET numero_msg = 1
CALL msg(numero_msg)
END IF # DECICION ACTUALIZACION
ELSE
GOTO vuelve
END IF
CLEAR FORM
END FUNCTION