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