2549 lines
98 KiB
Plaintext
2549 lines
98 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,
|
|
ptipo_orden VARCHAR(50),
|
|
total_medida,pcontrol DEC(12,5),
|
|
factor_conv DEC(12,5),
|
|
num_emp_inst,tmpnumero INTEGER,
|
|
arrcuenta 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)
|
|
|
|
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),simbolo CHAR(5)
|
|
|
|
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 "smarmotech" AS "MSSQL" USER usuarios USING clave
|
|
SELECT *
|
|
INTO p_compania.* FROM companias
|
|
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()}
|
|
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.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
|
|
iNTO prtb08.ventas,prtb08.tipo_cliente,prtb08.sec_cliente,prtb08.sec_vend,
|
|
prtb08.cond_pago,prtb08.ubicacion,f_itbis,pnombre_proyecto,
|
|
monto_cotiza
|
|
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 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
|
|
|
|
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
|
|
|
|
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 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
|
|
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
|
|
|
|
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].cantidad_1 = 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
|
|
|
|
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 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
|
|
}
|
|
CALL seleccionarsalida() RETURNING r_output
|
|
#LET r_output='PDF'
|
|
LET preview = TRUE
|
|
LET r_filename ="prprmt008.4rp"
|
|
IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
|
|
CALL fgl_report_selectDevice(r_output) -- changing default
|
|
CALL fgl_report_selectPreview(preview) -- changing default
|
|
LET handler = fgl_report_commitCurrentSettings() -- commit changes
|
|
END IF
|
|
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 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
|
|
}
|
|
CALL seleccionarsalida() RETURNING r_output
|
|
#LET r_output='PDF'
|
|
LET preview = TRUE
|
|
LET r_filename ="prprmt008.4rp"
|
|
IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
|
|
CALL fgl_report_selectDevice(r_output) -- changing default
|
|
CALL fgl_report_selectPreview(preview) -- changing default
|
|
LET handler = fgl_report_commitCurrentSettings() -- commit changes
|
|
END IF
|
|
START REPORT o_pedido TO XML HANDLER HANDLER
|
|
|
|
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 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,ptipo_orden,num_emp_inst
|
|
|
|
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,ptipo_orden,num_emp_inst
|
|
|
|
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,ptipo_orden,num_emp_inst
|
|
|
|
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,ptipo_orden,num_emp_inst
|
|
|
|
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,ptipo_orden,num_emp_inst
|
|
|
|
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,ptipo_orden,num_emp_inst
|
|
|
|
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,ptipo_orden,num_emp_inst
|
|
|
|
|
|
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,ptipo_orden,num_emp_inst
|
|
|
|
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,ptipo_orden,num_emp_inst
|
|
|
|
|
|
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 ptipo_orden,num_emp_inst
|
|
NEXT OPTION "anterior"
|
|
COMMAND "Instalador"
|
|
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
|
|
|
|
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"
|
|
# VERIFICA SI LA ORDEN TIENE AVANCE
|
|
SELECT UNIQUE a.num_cheque FROM cctb00001 a
|
|
WHERE a.num_cheque = prtb08.num_oc AND
|
|
a.tipo_cliente = prtb08.tipo_cliente and
|
|
a.sec_cliente = prtb08.sec_cliente and
|
|
a.tipo_doc = "AV"
|
|
|
|
IF STATUS != NOTFOUND THEN
|
|
ERROR "NO PUEDE ANULAR ORDEN, TIENE AVANCES"
|
|
RETURN
|
|
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
|
|
ERROR "NO PUEDE ANULAR ORDEN, TIENE REQUISICION"
|
|
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.tipo_cliente = prtb08.tipo_cliente and
|
|
a.sec_cliente = prtb08.sec_cliente 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.cod_sp = prtb08.tipo_cliente and
|
|
a.cod_sp_sec = prtb08.sec_cliente 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
|
|
|
|
LET esta=fgl_winquestion("ANULAR","ESTA SEGURO DE ANULAR ESTA ORDEN?","NO","YES|NO","QUESTION",0)
|
|
LET esta = UPSHIFT(esta)
|
|
IF esta = "YES" THEN
|
|
LET prtb09.num_oc = prtb08.num_oc
|
|
LET prtb09.fecha = prtb08.fecha_oc
|
|
LET prtb09.pendiente = "S"
|
|
LET prtb09.detalle = "SE CANCELO LA ORDEN DE PEDIDO"
|
|
LET prtb09.status_t = "E"
|
|
|
|
# INSERT INTO prtb00009 VALUES (prtb09.*)
|
|
|
|
UPDATE prtb00012 set status_t = "E",
|
|
us_mod = SUSER_SNAME(),
|
|
fech_mod = GETDATE()
|
|
WHERE @num_oc = prtb08.num_oc
|
|
|
|
UPDATE prtb00014 set status_t = "E",
|
|
us_mod = SUSER_SNAME(),
|
|
fech_mod = GETDATE()
|
|
WHERE @num_oc = prtb08.num_oc
|
|
|
|
UPDATE prtb00009 SET status_t = "E",
|
|
us_mod = SUSER_SNAME(),
|
|
fech_mod = GETDATE()
|
|
WHERE @num_oc = prtb08.num_oc
|
|
|
|
UPDATE prtb00015 SET status_t = "E",
|
|
us_mod = SUSER_SNAME(),
|
|
fech_mod = GETDATE()
|
|
WHERE @num_oc = prtb08.num_oc
|
|
|
|
LET numero_msg = 39
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
}
|
|
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
|
|
DISPLAY "obsrvacion",p_prtb14.observacion
|
|
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 XML HANDLER HANDLER
|
|
ELSE
|
|
CALL seleccionarsalida() RETURNING r_output
|
|
#LET r_output='PDF'
|
|
LET preview = TRUE
|
|
LET r_filename ="prprmt008.4rp"
|
|
IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
|
|
CALL fgl_report_selectDevice(r_output) -- changing default
|
|
CALL fgl_report_selectPreview(preview) -- changing default
|
|
LET handler = fgl_report_commitCurrentSettings() -- commit changes
|
|
END IF
|
|
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 ptipo_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 "
|
|
|
|
|
|
|
|
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
|
|
SKIP 1 LINE
|
|
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 aqui
|
|
|
|
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 "#,###,###.&&"
|
|
aqui
|
|
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}
|
|
|
|
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)
|
|
|
|
|
|
FORMAT
|
|
FIRST PAGE HEADER
|
|
|
|
# SELECT a.* INTO p_compania.* FROM companias a
|
|
|
|
|
|
LET prnc ="RNC:",p_compania.rnc
|
|
|
|
|
|
LET ptelefono = p_compania.telefono
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
# 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
|
|
|
|
|
|
|
|
|
|
BEFORE GROUP OF z.area
|
|
SELECT a.nombre_Area INTO descrip_Area FROM prtb00016 a
|
|
WHERE a.area_num = z.area
|
|
|
|
|
|
|
|
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 }
|
|
|
|
|
|
|
|
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 "<<<.#####"
|
|
PRINTX pcantidad ,etiqueta,plado1,plado2,plado3,pmedida
|
|
LET total_unidades = total_unidades + pcantidad
|
|
END FOREACH
|
|
END IF
|
|
PRINTX z.*,nombre,prtb08.*,nombres,apellidos,descrip_p,xnumrnc,Y.*,
|
|
p_compania.*,pnombre_proyecto,xnumero
|
|
ON LAST ROW
|
|
# Control Despachos Parciales
|
|
SELECT unique a.num_oc FROM prtb00015 a
|
|
WHERE a.num_oc = xnumero
|
|
|
|
IF STATUS != NOTFOUND THEN
|
|
|
|
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].*
|
|
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
END IF
|
|
|
|
LET total_inst = (prtb08.cantidad_i * prtb08.precio_i) +
|
|
(prtb08.cantidad_mo * prtb08.precio_mo)
|
|
|
|
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()
|
|
|
|
|
|
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 |