2212 lines
81 KiB
Plaintext
2212 lines
81 KiB
Plaintext
{
|
|
------------------------------------------------------------------
|
|
PROGRAMA : PRPRMT008
|
|
OBJETIVO : Ordenes de Pedidos
|
|
PROGRAMADOR : Oscar Castillo
|
|
FECHA REALIZACION : Sábado 12 de Agosto de 2000
|
|
MODIFICADO POR : Victor Gomez C
|
|
FECHA MODIFICACION: Wednesday, 10 January, 2001
|
|
MODIFICADO POR : Victor Gomez C
|
|
FECHA MODIFICACION: Tuesday, January 16, 2001
|
|
Crear campos observacion y fecha de cierre de la
|
|
orden de produccion.
|
|
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
|
|
------------------------------------------------------------------
|
|
}
|
|
GLOBALS "prprgb000.4gl"
|
|
|
|
DEFINE despiece ARRAY[100] OF RECORD
|
|
etiqueta CHAR(20),
|
|
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,
|
|
total_medida DEC(12,5),
|
|
factor_conv DEC(12,5),
|
|
tmpnumero INTEGER,
|
|
arrcuenta SMALLINT,
|
|
nuevo,cliente1,conduce CHAR(1)
|
|
DEFINE ptipocliente ui.combobox,
|
|
ttipo SMALLINT,tdescripcion CHAR(30)
|
|
|
|
|
|
|
|
|
|
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 ARRAY[10] OF RECORD
|
|
num_oc LIKE prtb00015.num_oc,
|
|
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(3,2)
|
|
DEFINE sub_total,sub_total1,balance DECIMAL(10,2),
|
|
descrip_p CHAR(30)
|
|
|
|
|
|
|
|
DEFINE p_totales RECORD
|
|
sub_total DEC(8,2), #-> Sub-Total de los Productos menos descuento
|
|
unidad_med CHAR(4), #-> Unidad de medida del producto
|
|
total_v DEC(10,2) #-> Total de la venta
|
|
END RECORD
|
|
|
|
DEFINE arr_prtb08 ARRAY[200] OF RECORD
|
|
fila SMALLINT,
|
|
cod_n LIKE prtb00013.cod_n,
|
|
cod_grupo LIKE prtb00013.cod_grupo,
|
|
cod_tipo LIKE prtb00013.cod_tipo,
|
|
cod_sec LIKE prtb00013.cod_sec,
|
|
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
|
|
|
|
CONNECT to "smarmotech" USER usuarios USING clave
|
|
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 "OPCIONES"
|
|
COMMAND "Adicionar" "<Esc> Adiciona Registro <Supr> Cancela Operacion"
|
|
LET INT_FLAG = FALSE
|
|
CLEAR FORM
|
|
LET nuevo = "S"
|
|
CALL prpcad008()
|
|
COMMAND "Consultar"
|
|
LET INT_FLAG = FALSE
|
|
CLEAR FORM
|
|
CALL prpcmf008()
|
|
COMMAND "Salir" "Retorna Menu Anterior"
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
|
|
FUNCTION prpcad008()
|
|
## Captura los datos que va a contener el registro
|
|
|
|
LET INT_FLAG = false
|
|
|
|
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
|
|
END IF
|
|
CALL ui.ComboBox.setDefaultInitializer("cventas")
|
|
CALL ui.ComboBox.setDefaultInitializer("ccondicion")
|
|
|
|
INPUT BY NAME prtb08.num_oc,prtb08.fecha_oc,prtb08.ventas,prtb08.cotizacion_no,
|
|
prtb08.tipo_cliente,
|
|
prtb08.sec_cliente,prtb08.fecha_entrega,
|
|
prtb08.cond_pago,prtb08.ubicacion WITHOUT DEFAULTS
|
|
ON ACTION sec_cliente
|
|
IF prtb08.tipo_cliente iS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD ventas
|
|
END IF
|
|
CALL busca_cliente8()
|
|
DISPLAY BY NAME prtb08.tipo_cliente,prtb08.sec_cliente,nombre ATTRIBUTE(BLUE)
|
|
|
|
AFTER FIELD ventas
|
|
DECLARE busca_tipo CURSOR FOR
|
|
SELECT UNIQUE a.tipo_cliente,a.tipo_cliente INTO prtb08.tipo_cliente FROM vetb00060 a
|
|
WHERE a.ventas = prtb08.ventas
|
|
LET ptipocliente = ui.ComboBox.forName("formonly.tipo_cliente")
|
|
CALL ptipocliente.clear()
|
|
|
|
FOREACH busca_tipo
|
|
CALL ptipocliente.additem(prtb08.tipo_cliente,prtb08.tipo_cliente)
|
|
END FOREACH
|
|
|
|
DISPLAY BY NAME prtb08.tipo_cliente
|
|
AFTER FIELD cotizacion_no
|
|
|
|
BEFORE FIELD tipo_cliente
|
|
IF nuevo <> "S" THEN
|
|
CALL controlact()
|
|
IF cliente1 = "N" THEN
|
|
ERROR "NO PUEDE MODIFICAR DATOS DEL CLIENTE, ESTA ORDEN TIENE AVANCE"
|
|
NEXT FIELD fecha_entrega
|
|
END IF
|
|
END IF
|
|
{ AFTER FIELD sec_cliente
|
|
|
|
SELECT a.telefono, a.fax INTO prtb08.telefono, prtb08.fax
|
|
FROM vetb00004 a
|
|
WHERE a.tipo_cliente = prtb08.tipo_cliente
|
|
AND a.sec_cliente = prtb08.sec_cliente
|
|
|
|
SELECT b.calle,b.casa_num,b.barrio,b.urbanizacion
|
|
INTO fcalle,fcasa_num,fbarrio,furbanizacion
|
|
FROM vetb00005 b
|
|
WHERE b.tipo_cliente = prtb08.tipo_cliente
|
|
AND b.sec_cliente = prtb08.sec_cliente
|
|
|
|
LET prtb08.direccion = fcalle CLIPPED,",",fcasa_num CLIPPED,",",
|
|
fbarrio CLIPPED,",",furbanizacion CLIPPED
|
|
|
|
DISPLAY BY NAME prtb08.telefono, prtb08.fax, prtb08.direccion
|
|
|
|
AFTER FIELD parchivo
|
|
IF parchivo IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD parchivo
|
|
END IF
|
|
|
|
LET karchivo = "dir ",FGL_GETENV("FILEPATH"),"\\",parchivo CLIPPED,".bmp"
|
|
RUN karchivo RETURNING perror
|
|
|
|
IF perror != 0 THEN
|
|
LET numero_msg = 385
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD parchivo
|
|
END IF
|
|
}
|
|
AFTER FIELD fecha_entrega
|
|
IF prtb08.fecha_entrega IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha_entrega
|
|
END IF
|
|
IF prtb08.fecha_entrega < prtb08.fecha_oc THEN
|
|
LET numero_msg =51
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha_entrega
|
|
END IF
|
|
|
|
{ AFTER FIELD nombre_file
|
|
LET nombmp = FGL_GETENV("FGLBMP")
|
|
LET nombmp = nombmp CLIPPED,prtb08.nombre_file CLIPPED,".bmp"
|
|
DISPLAY nombmp TO bmpfld
|
|
|
|
AFTER FIELD sec_vend
|
|
IF prtb08.sec_vend IS NOT NULL THEN
|
|
SELECT a.nom1_emp,a.apell1_emp INTO nombres,apellidos
|
|
FROM adtb00003 a
|
|
WHERE a.num_emp = prtb08.sec_vend
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD sec_vend
|
|
END IF
|
|
LET nombre_vend = nombres CLIPPED," ",apellidos CLIPPED
|
|
DISPLAY BY NAME nombre_vend ATTRIBUTE(BLUE)
|
|
END IF
|
|
}
|
|
BEFORE FIELD fecha_oc
|
|
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 FIELD cond_pago
|
|
IF prtb08.cond_pago IS NULL THEN
|
|
LET numero_msg = 12
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cond_pago
|
|
END IF
|
|
|
|
SELECT a.descrip INTO descrip_p
|
|
FROM vetb00012 a
|
|
WHERE a.cond_pago = prtb08.cond_pago AND
|
|
a.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cond_pago
|
|
END IF
|
|
DISPLAY BY NAME descrip_p ATTRIBUTE(BLUE)
|
|
}
|
|
AFTER FIELD sec_cliente
|
|
SELECT a.nombre,a.telefono,a.fax
|
|
INTO nombre,prtb08.telefono,prtb08.fax
|
|
FROM vetb00004 a
|
|
WHERE a.tipo_cliente = prtb08.tipo_cliente AND
|
|
a.sec_cliente = prtb08.sec_cliente AND
|
|
a.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo_cliente
|
|
END IF
|
|
|
|
SELECT a.* INTO vetb05.*
|
|
FROM vetb00005 a
|
|
WHERE a.tipo_cliente = prtb08.tipo_cliente AND
|
|
a.sec_cliente = prtb08.sec_cliente
|
|
LET prtb08.direccion = vetb05.calle CLIPPED," ",vetb05.casa_num CLIPPED,vetb05.barrio CLIPPED
|
|
|
|
DISPLAY BY NAME prtb08.direccion,prtb08.telefono,nombre ATTRIBUTE(BLUE)
|
|
|
|
SELECT a.sec_vend,b.nom1_emp,b.apell1_emp INTO prtb08.sec_vend,nombres,apellidos
|
|
FROM vetb00028 a,adtb00003 b
|
|
WHERE a.sec_vend = b.num_emp AND a.tipo_cliente = prtb08.tipo_cliente and
|
|
a.sec_cliente = prtb08.sec_cliente
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg =119
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo_cliente
|
|
END IF
|
|
IF prtb08.sec_vend IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
LET nombre_vend ="NO TIENE VENDEDOR"
|
|
DISPLAY BY NAME nombre_vend ATTRIBUTE(RED)
|
|
END IF
|
|
LET nombre_vend = nombres CLIPPED," ",apellidos CLIPPED
|
|
DISPLAY BY NAME nombre_vend,prtb08.sec_vend
|
|
|
|
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 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
|
|
END INPUT
|
|
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
|
|
|
|
END IF
|
|
IF nuevo <> "S" THEN
|
|
CALL controlact()
|
|
IF conduce = "N" THEN
|
|
ERROR "ESTA ORDEN TIENE CONDUCES ACTIVOS, NO PUEDE SER MODIFICADA"
|
|
RETURN
|
|
END IF
|
|
END IF
|
|
|
|
ERROR "<F9> PARA LOS DESPACHOS PARCIALES"
|
|
INPUT ARRAY arr_prtb08 WITHOUT DEFAULTS FROM s_pedido.*
|
|
ON KEY(F9)
|
|
CALL parciales()
|
|
ON KEY(F10)
|
|
# CONTROL DESPIECE
|
|
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()
|
|
END IF
|
|
ELSE
|
|
ERROR "ESTE PRODUCTO NO SE DESPIEZA"
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
###---------------------------------------------------------------
|
|
END IF
|
|
CALL despiece()
|
|
DISPLAY arr_prtb08[curr].cantidad_1 TO s_pedido[scr_l].cantidad_1
|
|
BEFORE ROW
|
|
LET curr = arr_curr()
|
|
LET scr_l = scr_line()
|
|
IF nuevo = "S" THEN
|
|
LET sub_total = 0
|
|
END IF
|
|
ON ACTION cod_n
|
|
CALL ccodn()
|
|
DISPLAY arr_prtb08[curr].* TO s_pedido[scr_l].*
|
|
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
|
|
{ BUSCA LOS PRECIOS DEL PRODUCTO, ESTO NO ESTA FUNCIONANDO HASTA QUE SE AUTORICE
|
|
IF nuevo = "S" THEN
|
|
LET p_costos1 = 0
|
|
SELECT precio INTO p_costos1 FROM vetb00025 a
|
|
WHERE a.tipo_cliente = prtb08.tipo_cliente AND
|
|
a.sec_cliente = prtb08.sec_cliente AND
|
|
a.cod_n = arr_prtb08[curr].cod_n AND
|
|
a.cod_grupo = arr_prtb08[curr].cod_grupo AND
|
|
a.cod_tipo = arr_prtb08[curr].cod_tipo AND
|
|
a.cod_sec = arr_prtb08[curr].cod_sec AND
|
|
a.ventas = prtb08.ventas AND
|
|
a.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
SELECT precio INTO p_costos1 FROM vetb00025 a
|
|
WHERE a.tipo_cliente IS NULL AND
|
|
a.cod_n = arr_prtb08[curr].cod_n AND
|
|
a.cod_tipo = arr_prtb08[curr].cod_tipo AND
|
|
a.cod_grupo = arr_prtb08[curr].cod_grupo AND
|
|
a.cod_sec = arr_prtb08[curr].cod_sec AND
|
|
a.ventas = prtb08.ventas AND
|
|
a.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 85
|
|
CALL msg(numero_msg)
|
|
# NEXT FIELD cod_n
|
|
END IF
|
|
END IF
|
|
END IF
|
|
}
|
|
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
|
|
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 = tmpnumero
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg =398
|
|
CALL msg(numero_msg)
|
|
CALL despiece() #NEXT FIELD cod_n
|
|
|
|
END IF
|
|
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)
|
|
NEXT FIELD cod_n
|
|
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 terminacion
|
|
IF arr_prtb08[curr].terminacion IS NOT NULL THEN
|
|
IF arr_prtb08[curr].terminacion <> "R" AND
|
|
arr_prtb08[curr].terminacion <> "P" AND
|
|
arr_prtb08[curr].terminacion <> "B" AND
|
|
arr_prtb08[curr].terminacion <> "A" THEN
|
|
NEXT FIELD terminacion
|
|
END IF
|
|
END IF
|
|
|
|
DISPLAY arr_prtb08[curr].terminacion TO s_pedido[scr_l].terminacion ATTRIBUTE(BLUE)
|
|
|
|
AFTER FIELD bisel
|
|
{ IF arr_prtb08[curr].bisel IS NOT NULL THEN
|
|
IF arr_prtb08[curr].bisel <> "DBN" AND
|
|
arr_prtb08[curr].bisel <> "SDN" THEN
|
|
NEXT FIELD bisel
|
|
END IF
|
|
END IF }
|
|
|
|
DISPLAY arr_prtb08[curr].bisel TO s_pedido[scr_l].bisel ATTRIBUTE(BLUE)
|
|
|
|
AFTER FIELD cantidad_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
|
|
DISPLAY arr_prtb08[curr].cantidad TO s_pedido[scr_l].cantidad
|
|
AFTER FIELD precio
|
|
IF arr_prtb08[curr].precio IS NULL OR
|
|
arr_prtb08[curr].precio < 0 THEN
|
|
LET arr_prtb08[curr].descuento = 0
|
|
END IF
|
|
LET bandera = 0
|
|
LET ridx = curr
|
|
CALL codigoRepite()
|
|
IF bandera = 1 THEN
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
BEFORE FIELD descuento
|
|
LET monto_desc = 0
|
|
LET total1 = 0
|
|
|
|
AFTER FIELD descuento
|
|
IF arr_prtb08[curr].descuento IS NULL THEN
|
|
LET arr_prtb08[curr].descuento = 0
|
|
END IF
|
|
|
|
LET monto_desc = (arr_prtb08[curr].precio * arr_prtb08[curr].cantidad) *
|
|
(arr_prtb08[curr].descuento /100)
|
|
|
|
LET total1 = (arr_prtb08[curr].precio * arr_prtb08[curr].cantidad) - monto_desc
|
|
|
|
LET arr_prtb08[curr].total_p = total1
|
|
LET p_totales.sub_total = p_totales.sub_total + arr_prtb08[curr].total_p
|
|
|
|
DISPLAY arr_prtb08[curr].total_p TO s_pedido[scr_l].total_p
|
|
DISPLAY BY NAME p_totales.sub_total
|
|
|
|
AFTER ROW
|
|
IF nuevo = "S" THEN
|
|
LET p_totales.sub_total = 0
|
|
LET arr_prtb08[curr].total_p = arr_prtb08[curr].cantidad *
|
|
arr_prtb08[curr].precio
|
|
END IF
|
|
FOR idx = 1 TO arr_count()
|
|
IF arr_prtb08[idx].total_p IS NOT NULL THEN
|
|
LET p_totales.sub_total = p_totales.sub_total + arr_prtb08[idx].total_p
|
|
END IF
|
|
END FOR
|
|
|
|
DISPLAY BY NAME p_totales.sub_total
|
|
|
|
AFTER INPUT
|
|
|
|
IF INT_FLAG THEN
|
|
LET 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)
|
|
|
|
LET arr_prtb08[idx].total_p = (arr_prtb08[idx].cantidad *
|
|
arr_prtb08[idx].precio)-
|
|
monto_desc
|
|
LET p_totales.sub_total = p_totales.sub_total + arr_prtb08[idx].total_p
|
|
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
|
|
|
|
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
|
|
display "Observaciones " at 23,15 SLEEP 4
|
|
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)
|
|
|
|
AFTER FIELD transporte
|
|
LET sub_total = (total_i + total_mo)+ p_totales.sub_total
|
|
LET sub_total1 = sub_total + prtb08.transporte
|
|
|
|
#-> Bsuca el itbis disponible para la fecha actual vg
|
|
IF prtb08.tipo_cliente <> 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
|
|
|
|
#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
|
|
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"
|
|
INSERT INTO prtb00012 VALUES (prtb08.*)
|
|
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())
|
|
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)
|
|
|
|
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].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
|
|
|
|
# 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 cmd = "TYPE ",archivo CLIPPED," ",copia
|
|
|
|
RUN cmd
|
|
|
|
LET numero_msg = 1
|
|
CALL msg(numero_msg)
|
|
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 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.num_oc,a.tipo_cliente,a.sec_cliente
|
|
|
|
IF INT_FLAG THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET INT_FLAG = FALSE
|
|
RETURN
|
|
END IF
|
|
|
|
LET SELEC = " SELECT UNIQUE a.* FROM prtb00012 a ",
|
|
" WHERE ",criterio CLIPPED, " AND a.status_t IS NULL "," ORDER BY a.num_oc "
|
|
|
|
PREPARE busca FROM selec
|
|
DECLARE datos SCROLL CURSOR FOR busca
|
|
OPEN datos
|
|
|
|
FETCH FIRST datos INTO prtb08.*
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
|
|
SELECT SUM(a.valor) INTO balance
|
|
FROM cctb00001 a
|
|
WHERE a.tipo_cliente = prtb08.tipo_cliente
|
|
AND a.sec_cliente = prtb08.sec_cliente
|
|
AND a.status_t IS NULL
|
|
|
|
IF balance IS NULL THEN
|
|
LET balance = 0
|
|
END IF
|
|
|
|
SELECT a.telefono, a.fax INTO prtb08.telefono, prtb08.fax
|
|
FROM vetb00004 a
|
|
WHERE a.tipo_cliente = prtb08.tipo_cliente
|
|
AND a.sec_cliente = prtb08.sec_cliente
|
|
|
|
SELECT b.calle,b.casa_num,b.barrio,b.urbanizacion
|
|
INTO fcalle,fcasa_num,fbarrio,furbanizacion
|
|
FROM vetb00005 b
|
|
WHERE b.tipo_cliente = prtb08.tipo_cliente
|
|
AND b.sec_cliente = prtb08.sec_cliente
|
|
|
|
LET prtb08.direccion = fcalle CLIPPED,",",fcasa_num CLIPPED,",",
|
|
fbarrio CLIPPED,",",furbanizacion CLIPPED
|
|
|
|
DISPLAY BY NAME prtb08.num_oc,prtb08.fecha_oc,prtb08.tipo_cliente,prtb08.ventas,
|
|
prtb08.sec_cliente,prtb08.direccion,prtb08.telefono,
|
|
prtb08.fax,prtb08.fecha_entrega,prtb08.cond_pago,
|
|
balance,prtb08.cantidad_i,prtb08.precio_i,prtb08.cantidad_mo,
|
|
prtb08.precio_mo,prtb08.transporte,prtb08.itbis,prtb08.sec_vend ATTRIBUTE(BLUE)
|
|
|
|
CALL busca_cliente8m()
|
|
CALL busca_vendm8()
|
|
#CALL limpia8()
|
|
CALL busca_detalle8()
|
|
LET sub_total1 = sub_total + (prtb08.cantidad_i * prtb08.precio_i) + (prtb08.cantidad_mo * prtb08.precio_mo) +
|
|
prtb08.transporte
|
|
LET p_totales.total_v = sub_total1 + prtb08.itbis
|
|
DISPLAY BY NAME p_totales.total_v
|
|
|
|
MENU "OPCIONES "
|
|
COMMAND "Siguiente" "Presenta en pantalla el proprtb08.mo registro encontrado"
|
|
FETCH NEXT datos INTO prtb08.*
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 4
|
|
CALL msg(numero_msg)
|
|
NEXT OPTION "anterior"
|
|
END IF
|
|
|
|
SELECT SUM(a.valor) INTO balance
|
|
FROM cctb00001 a
|
|
WHERE a.tipo_cliente = prtb08.tipo_cliente
|
|
AND a.sec_cliente = prtb08.sec_cliente
|
|
AND a.status_t IS NULL
|
|
|
|
IF balance IS NULL THEN
|
|
LET balance = 0
|
|
END IF
|
|
|
|
SELECT a.telefono, a.fax INTO prtb08.telefono, prtb08.fax
|
|
FROM vetb00004 a
|
|
WHERE a.tipo_cliente = prtb08.tipo_cliente
|
|
AND a.sec_cliente = prtb08.sec_cliente
|
|
|
|
SELECT b.calle,b.casa_num,b.barrio,b.urbanizacion
|
|
INTO fcalle,fcasa_num,fbarrio,furbanizacion
|
|
FROM vetb00005 b
|
|
WHERE b.tipo_cliente = prtb08.tipo_cliente
|
|
AND b.sec_cliente = prtb08.sec_cliente
|
|
|
|
LET prtb08.direccion = fcalle CLIPPED,",",fcasa_num CLIPPED,",",
|
|
fbarrio CLIPPED,",",furbanizacion CLIPPED
|
|
|
|
DISPLAY BY NAME prtb08.num_oc,prtb08.fecha_oc,prtb08.tipo_cliente,
|
|
prtb08.sec_cliente,prtb08.direccion,prtb08.telefono,
|
|
prtb08.fax,prtb08.fecha_entrega,prtb08.cond_pago,
|
|
balance,prtb08.cantidad_i,prtb08.precio_i,prtb08.cantidad_mo,
|
|
prtb08.precio_mo,prtb08.transporte,prtb08.itbis,prtb08.sec_vend ATTRIBUTE(BLUE)
|
|
CALL busca_cliente8m()
|
|
CALL busca_vendm8()
|
|
#CALL limpia8()
|
|
CALL busca_detalle8()
|
|
LET sub_total1 = sub_total + (prtb08.cantidad_i * prtb08.precio_i) + (prtb08.cantidad_mo * prtb08.precio_mo) +
|
|
prtb08.transporte
|
|
LET p_totales.total_v = sub_total1 + prtb08.itbis
|
|
DISPLAY BY NAME p_totales.total_v
|
|
|
|
COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado"
|
|
FETCH PREVIOUS datos INTO prtb08.*
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 5
|
|
CALL msg(numero_msg)
|
|
NEXT OPTION "siguiente"
|
|
END IF
|
|
|
|
SELECT SUM(a.valor) INTO balance
|
|
FROM cctb00001 a
|
|
WHERE a.tipo_cliente = prtb08.tipo_cliente
|
|
AND a.sec_cliente = prtb08.sec_cliente
|
|
AND a.status_t IS NULL
|
|
|
|
IF balance IS NULL THEN
|
|
LET balance = 0
|
|
END IF
|
|
|
|
SELECT a.telefono, a.fax INTO prtb08.telefono, prtb08.fax
|
|
FROM vetb00004 a
|
|
WHERE a.tipo_cliente = prtb08.tipo_cliente
|
|
AND a.sec_cliente = prtb08.sec_cliente
|
|
|
|
SELECT b.calle,b.casa_num,b.barrio,b.urbanizacion
|
|
INTO fcalle,fcasa_num,fbarrio,furbanizacion
|
|
FROM vetb00005 b
|
|
WHERE b.tipo_cliente = prtb08.tipo_cliente
|
|
AND b.sec_cliente = prtb08.sec_cliente
|
|
|
|
LET prtb08.direccion = fcalle CLIPPED,",",fcasa_num CLIPPED,",",
|
|
fbarrio CLIPPED,",",furbanizacion CLIPPED
|
|
|
|
DISPLAY BY NAME prtb08.num_oc,prtb08.fecha_oc,prtb08.tipo_cliente,
|
|
prtb08.sec_cliente,prtb08.direccion,prtb08.telefono,
|
|
prtb08.fax,prtb08.fecha_entrega,prtb08.cond_pago,
|
|
balance,prtb08.cantidad_i,prtb08.precio_i,prtb08.cantidad_mo,
|
|
prtb08.precio_mo,prtb08.transporte,prtb08.itbis,prtb08.sec_vend ATTRIBUTE(BLUE)
|
|
|
|
CALL busca_cliente8m()
|
|
CALL busca_vendm8()
|
|
#CALL limpia8()
|
|
CALL busca_detalle8()
|
|
LET sub_total1 = sub_total + (prtb08.cantidad_i * prtb08.precio_i) + (prtb08.cantidad_mo * prtb08.precio_mo) +
|
|
prtb08.transporte
|
|
LET p_totales.total_v = sub_total1 + prtb08.itbis
|
|
DISPLAY BY NAME p_totales.total_v
|
|
|
|
COMMAND "Primero" "Presenta en pantalla el primer registro encontrado"
|
|
FETCH FIRST datos INTO prtb08.*
|
|
|
|
SELECT SUM(a.valor) INTO balance
|
|
FROM cctb00001 a
|
|
WHERE a.tipo_cliente = prtb08.tipo_cliente
|
|
AND a.sec_cliente = prtb08.sec_cliente
|
|
AND a.status_t IS NULL
|
|
|
|
IF balance IS NULL THEN
|
|
LET balance = 0
|
|
END IF
|
|
|
|
SELECT a.telefono, a.fax INTO prtb08.telefono, prtb08.fax
|
|
FROM vetb00004 a
|
|
WHERE a.tipo_cliente = prtb08.tipo_cliente
|
|
AND a.sec_cliente = prtb08.sec_cliente
|
|
|
|
SELECT b.calle,b.casa_num,b.barrio,b.urbanizacion
|
|
INTO fcalle,fcasa_num,fbarrio,furbanizacion
|
|
FROM vetb00005 b
|
|
WHERE b.tipo_cliente = prtb08.tipo_cliente
|
|
AND b.sec_cliente = prtb08.sec_cliente
|
|
|
|
LET prtb08.direccion = fcalle CLIPPED,",",fcasa_num CLIPPED,",",
|
|
fbarrio CLIPPED,",",furbanizacion CLIPPED
|
|
|
|
DISPLAY BY NAME prtb08.num_oc,prtb08.fecha_oc,prtb08.tipo_cliente,
|
|
prtb08.sec_cliente,prtb08.direccion,prtb08.telefono,
|
|
prtb08.fax,prtb08.fecha_entrega,prtb08.cond_pago,
|
|
balance,prtb08.cantidad_i,prtb08.precio_i,prtb08.cantidad_mo,
|
|
prtb08.precio_mo,prtb08.transporte,prtb08.itbis,prtb08.sec_vend ATTRIBUTE(BLUE)
|
|
|
|
CALL busca_cliente8m()
|
|
CALL busca_vendm8()
|
|
#CALL limpia8()
|
|
CALL busca_detalle8()
|
|
|
|
LET sub_total1 = sub_total + (prtb08.cantidad_i * prtb08.precio_i) + (prtb08.cantidad_mo * prtb08.precio_mo) +
|
|
prtb08.transporte
|
|
LET p_totales.total_v = sub_total1 + prtb08.itbis
|
|
DISPLAY BY NAME p_totales.total_v
|
|
|
|
NEXT OPTION "primero"
|
|
COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado"
|
|
FETCH LAST datos INTO prtb08.*
|
|
|
|
SELECT SUM(a.valor) INTO balance
|
|
FROM cctb00001 a
|
|
WHERE a.tipo_cliente = prtb08.tipo_cliente
|
|
AND a.sec_cliente = prtb08.sec_cliente
|
|
AND a.status_t IS NULL
|
|
|
|
IF balance IS NULL THEN
|
|
LET balance = 0
|
|
END IF
|
|
|
|
SELECT a.telefono, a.fax INTO prtb08.telefono, prtb08.fax
|
|
FROM vetb00004 a
|
|
WHERE a.tipo_cliente = prtb08.tipo_cliente
|
|
AND a.sec_cliente = prtb08.sec_cliente
|
|
|
|
SELECT b.calle,b.casa_num,b.barrio,b.urbanizacion
|
|
INTO fcalle,fcasa_num,fbarrio,furbanizacion
|
|
FROM vetb00005 b
|
|
WHERE b.tipo_cliente = prtb08.tipo_cliente
|
|
AND b.sec_cliente = prtb08.sec_cliente
|
|
|
|
LET prtb08.direccion = fcalle CLIPPED,",",fcasa_num CLIPPED,",",
|
|
fbarrio CLIPPED,",",furbanizacion CLIPPED
|
|
|
|
DISPLAY BY NAME prtb08.num_oc,prtb08.fecha_oc,prtb08.tipo_cliente,prtb08.ventas,
|
|
prtb08.sec_cliente,prtb08.direccion,prtb08.telefono,
|
|
prtb08.fax,prtb08.fecha_entrega,prtb08.cond_pago,
|
|
balance,prtb08.cantidad_i,prtb08.precio_i,prtb08.cantidad_mo,
|
|
prtb08.precio_mo,prtb08.transporte,prtb08.itbis,prtb08.sec_vend ATTRIBUTE(BLUE)
|
|
|
|
CALL busca_cliente8m()
|
|
CALL busca_vendm8()
|
|
#CALL limpia8()
|
|
CALL busca_detalle8()
|
|
|
|
NEXT OPTION "anterior"
|
|
{ COMMAND KEY ("T") "Actualizar"
|
|
LET nuevo = "N"
|
|
CALL prpcad008()}
|
|
|
|
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 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"
|
|
RETURN
|
|
END IF
|
|
# VERIFICACION DESPACHO
|
|
SELECT UNIQUE a.conduce_no FROM iptb00006 a
|
|
WHERE a.conduce_no = prtb08.num_oc AND
|
|
a.cod_sp = prtb08.tipo_cliente and
|
|
a.cod_sp_sec = prtb08.sec_cliente and
|
|
a.status_t is null
|
|
|
|
IF STATUS != NOTFOUND THEN
|
|
ERROR "NO PUEDE ANULAR ORDEN, TIENE CONDUCE"
|
|
RETURN
|
|
END IF
|
|
|
|
PROMPT "Esta seguro?" FOR esta
|
|
LET esta = UPSHIFT(esta)
|
|
IF esta = "S" THEN
|
|
LET prtb09.num_oc = prtb08.num_oc
|
|
LET prtb09.fecha = prtb08.fecha_oc
|
|
LET prtb09.pendiente = "S"
|
|
LET prtb09.detalle = "SE CANCELO LA ORDEN DE PEDIDO"
|
|
LET prtb09.status_t = "E"
|
|
|
|
INSERT INTO prtb00009 VALUES (prtb09.*)
|
|
|
|
UPDATE prtb00012 set status_t = "E",
|
|
us_mod = 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"
|
|
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")
|
|
|
|
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
|
|
|
|
|
|
# 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
|
|
}
|
|
RUN imprime
|
|
LET cmd = "TYPE ",archivo CLIPPED," ",copia
|
|
display "CMD ",cmd
|
|
RUN cmd
|
|
|
|
LET numero_msg = 1
|
|
CALL msg(numero_msg)
|
|
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()
|
|
|
|
DECLARE busca_d CURSOR FOR
|
|
SELECT a.secuencia,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,c.descrip_esp,c.unidad_med,a.terminacion,
|
|
a.bisel,b.cantidad_1,a.cantidad,a.precio,a.descuento
|
|
FROM prtb00013 a,iptb00002 c,outer prtb00023 b
|
|
WHERE a.num_oc = prtb08.num_oc AND
|
|
a.secuencia = b.secuencia AND
|
|
a.num_oc = b.num_oc AND
|
|
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.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
|
|
|
|
LET idx = 1
|
|
LET p_totales.sub_total = 0
|
|
LET p_totales.total_v = 0
|
|
FOREACH busca_d INTO arr_prtb08[idx].*
|
|
IF arr_prtb08[idx].cod_n IS NOT NULL THEN
|
|
SELECT a.descrip_esp,a.unidad_med INTO descrip_esp,p_totales.unidad_med
|
|
FROM iptb00002 a
|
|
WHERE a.cod_n = arr_prtb08[idx].cod_n AND
|
|
a.cod_grupo = arr_prtb08[idx].cod_grupo AND
|
|
a.cod_tipo = arr_prtb08[idx].cod_tipo AND
|
|
a.cod_sec = arr_prtb08[idx].cod_sec AND
|
|
a.status_t IS NULL
|
|
|
|
LET monto_desc = 0
|
|
LET total1 = 0
|
|
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,
|
|
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 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,subtotal DEC(8,2),
|
|
ult_pago INTEGER,
|
|
plado1,plado2,plado3,pcantidad,pmedida,total_unidades DEC(12,5),
|
|
etiqueta,prnc,ptelefono CHAR(20)
|
|
|
|
OUTPUT
|
|
LEFT MARGIN 0
|
|
|
|
ORDER BY xnumero
|
|
FORMAT
|
|
PAGE HEADER
|
|
LET normal = ASCII 27, ASCII 80
|
|
LET comp_on = ASCII 15
|
|
LET comp_off = ASCII 18
|
|
LET doce = ASCII 27, ascii 77
|
|
LET negrillas_on = ASCII 27, ASCII 69
|
|
LET negrillas_off = ASCII 27, ASCII 70
|
|
LET doble_on = ASCII 14
|
|
LET doble_off = ASCII 20
|
|
|
|
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("Ordenes de Pedido Corte a la Medida"))/2
|
|
PRINT COLUMN l, "ORDENES DE 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
|
|
|
|
|
|
|
|
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, "Direccion : ",prtb08.direccion CLIPPED,
|
|
COLUMN 62, "Ubicacion : ",prtb08.ubicacion 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
|
|
|
|
|
|
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
|
|
|
|
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 "##,###,###.&&"
|
|
display " FILA ",z.fila," codigo ",z.cod_sec
|
|
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.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
|
|
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
|
|
|
|
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 AND
|
|
a.status_t IS NULL
|
|
# CALL ui.combobox.setdefaultinitializer("cventas")
|
|
# CALL ui.combobox.setdefaultinitializer("ccondicion")
|
|
|
|
DISPLAY BY NAME nombre 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
|
|
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
|
|
DECLARE busca_despiece CURSOR FOR
|
|
SELECT a.etiqueta,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.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
|
|
|
|
DECLARE busca_despiece1 CURSOR FOR
|
|
SELECT a.etiqueta,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.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_despiece1 INTO despiece[idx].*
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
END IF
|
|
LET despiece[1].cod_n = arr_prtb08[curr].cod_n
|
|
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].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
|
|
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
|
|
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].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 = "N"
|
|
DISPLAY "TIENE AVANCE"
|
|
END IF
|
|
# CONTROL INVENTARIO
|
|
SELECT UNIQUE a.conduce_no FROM iptb00006 a WHERE a.conduce_no = prtb08.num_oc AND cod_mov in (30,31,55) and
|
|
a.status_t IS NULL
|
|
IF STATUS <> NOTFOUND THEN
|
|
LET conduce = "N"
|
|
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
|