{ ------------------------------------------------------------------ PROGRAMA : PRPRMT008 OBJETIVO : Ordenes de Pedidos PROGRAMADOR : Oscar Castillo FECHA REALIZACION : Sábado 12 de Agosto de 2000 MODIFICADO POR : Victor Gomez C FECHA MODIFICACION: Wednesday, 10 January, 2001 MODIFICADO POR : Victor Gomez C FECHA MODIFICACION: Tuesday, January 16, 2001 Crear campos observacion y fecha de cierre de la orden de produccion. ------------------------------------------------------------------ } GLOBALS "prprgb000.4gl" DEFINE nombre LIKE vetb00004.nombre, descrip_esp_c,descrip_esp LIKE iptb00002.descrip_esp, unidad LIKE iptb00002.unidad_med, unidad_c LIKE intb00001.unidad_med, descrip CHAR(20), esta,opt4 CHAR(1), nombre_vend,nombres,apellidos CHAR(40),fcalle CHAR(25), fcasa_num CHAR(5), fbarrio,furbanizacion CHAR(15), nombmp CHAR(120), monto_desc,total1,p_costos1,total_i,total_mo DECIMAL(12,2), ult_numero INTEGER, vetb05 RECORD LIKE vetb00005.* DEFINE archivo,filename,sysos CHAR(120), cels CHAR(20), cnt SMALLINT DEFINE primera,imprime_ana,imprime_cliente CHAR(1), cliente CHAR(70), codigo_g,codigo_ant,codigo_act CHAR(6), ret CHAR(30), ejecuta,localiza CHAR(80), documento CHAR(9) DEFINE numero_oc INTEGER, f_itbis DEC(3,2) DEFINE total_v,sub_total,sub_total1,sub_total2,balance DECIMAL(10,2), descrip_p CHAR(30) DEFINE prtb08 RECORD LIKE prtb00012.*, prtb09 RECORD LIKE prtb00009.* DEFINE p_totales RECORD sub_total DEC(8,2), #-> Sub-Total de los Productos menos descuento unidad_med CHAR(4), #-> Unidad de medida del producto total_v DEC(10,2) #-> Total de la venta END RECORD DEFINE arr_prtb08 ARRAY[200] OF RECORD fila SMALLINT, cod_n LIKE prtb00013.cod_n, cod_grupo LIKE prtb00013.cod_grupo, cod_tipo LIKE prtb00013.cod_tipo, cod_sec LIKE prtb00013.cod_sec, altura_zocalo LIKE prtb00013.altura_zocalo, terminacion CHAR(1), bisel LIKE prtb00013.bisel, cantidad LIKE prtb00013.cantidad, precio LIKE prtb00013.precio, descuento LIKE prtb00013.descuento, total_p DECIMAL(10,2) END RECORD FUNCTION prprmt008() # WHENEVER ERROR CONTINUE CLEAR SCREEN OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 23 CALL pantalla() OPEN FORM ctfmmt008 FROM "prfmmt008" DISPLAY FORM ctfmmt008 CALL pantalla() DISPLAY "prprmt008" AT 4,3 DISPLAY "Orden De Pedido" AT 6,32 MENU "OPCIONES" COMMAND "Adicionar" " Adiciona Registro Cancela Operacion" LET INT_FLAG = FALSE CLEAR FORM CALL prpcad008() COMMAND "Consultar" LET INT_FLAG = FALSE CLEAR FORM CALL prpcmf008() COMMAND "Salir" "Retorna Menu Anterior" EXIT MENU END MENU END FUNCTION FUNCTION prpcad008() ## Captura los datos que va a contener el registro LET INT_FLAG = false { SELECT MAX(num_oc) INTO ult_numero FROM prtb00012 IF ult_numero IS NULL THEN LET ult_numero = 0 END IF LET ult_numero = ult_numero + 1 } LET prtb08.num_oc = 0 LET prtb08.fecha_entrega = TODAY + 15 LABEL vuelve: INPUT BY NAME prtb08.num_oc,prtb08.fecha_oc,prtb08.tipo_cliente, prtb08.sec_cliente,prtb08.sec_vend,prtb08.fecha_entrega, prtb08.cond_pago,prtb08.ubicacion WITHOUT DEFAULTS ON KEY(CONTROL-W) CASE WHEN INFIELD(sec_vend) CALL vendedor8es() DISPLAY BY NAME prtb07.sec_vend,nombre_vend ATTRIBUTE(BLUE) EXIT CASE WHEN INFIELD (tipo_cliente) CALL busca_cliente8() DISPLAY BY NAME prtb08.tipo_cliente,prtb08.sec_cliente,nombre ATTRIBUTE(BLUE) EXIT CASE WHEN INFIELD (sec_cliente) CALL busca_cliente8() DISPLAY BY NAME prtb08.tipo_cliente,prtb08.sec_cliente,nombre ATTRIBUTE(BLUE) EXIT CASE END CASE AFTER FIELD sec_cliente IF prtb08.sec_cliente IS NOT NULL THEN SELECT a.telefono, a.fax INTO prtb08.telefono, prtb08.fax FROM vetb00004 a WHERE a.tipo_cliente = prtb08.tipo_cliente AND a.sec_cliente = prtb08.sec_cliente SELECT b.calle,b.casa_num,b.barrio,b.urbanizacion INTO fcalle,fcasa_num,fbarrio,furbanizacion FROM vetb00005 b WHERE b.tipo_cliente = prtb08.tipo_cliente AND b.sec_cliente = prtb08.sec_cliente LET prtb08.direccion = fcalle CLIPPED,",",fcasa_num CLIPPED,",", fbarrio CLIPPED,",",furbanizacion CLIPPED DISPLAY BY NAME prtb08.telefono, prtb08.fax, prtb08.direccion END IF AFTER FIELD fecha_entrega IF prtb08.fecha_entrega IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_entrega END IF IF prtb08.fecha_entrega < prtb08.fecha_oc THEN LET numero_msg =51 CALL msg(numero_msg) NEXT FIELD fecha_entrega END IF { AFTER FIELD nombre_file LET nombmp = FGL_GETENV("FGLBMP") LET nombmp = nombmp CLIPPED,prtb08.nombre_file CLIPPED,".bmp" DISPLAY nombmp TO bmpfld } AFTER FIELD sec_vend IF prtb08.sec_vend IS NOT NULL THEN SELECT a.nom1_emp,a.apell1_emp INTO nombres,apellidos FROM adtb00003 a WHERE a.num_emp = prtb08.sec_vend IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD sec_vend END IF LET nombre_vend = nombres CLIPPED," ",apellidos CLIPPED DISPLAY BY NAME nombre_vend ATTRIBUTE(BLUE) END IF BEFORE FIELD fecha_oc LET prtb08.fecha_oc = TODAY DISPLAY BY NAME prtb08.fecha_oc ATTRIBUTE(BLUE) AFTER FIELD fecha_oc IF prtb08.fecha_oc > TODAY THEN LET numero_msg = 189 CALL msg(numero_msg) NEXT FIELD fecha_oc END IF AFTER FIELD cond_pago IF prtb08.cond_pago IS NULL THEN LET numero_msg = 12 CALL msg(numero_msg) NEXT FIELD cond_pago END IF SELECT a.descrip INTO descrip_p FROM vetb00012 a WHERE a.cond_pago = prtb08.cond_pago AND a.status_t IS NULL IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cond_pago END IF DISPLAY BY NAME descrip_p ATTRIBUTE(BLUE) AFTER FIELD sec_cliente SELECT a.nombre,a.telefono,a.fax INTO nombre,prtb08.telefono,prtb08.fax FROM vetb00004 a WHERE a.tipo_cliente = prtb08.tipo_cliente AND a.sec_cliente = prtb08.sec_cliente AND a.status_t IS NULL IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD tipo_cliente END IF SELECT a.* INTO vetb05.* FROM vetb00005 a WHERE a.tipo_cliente = prtb08.tipo_cliente AND a.sec_cliente = prtb08.sec_cliente LET prtb08.direccion = vetb05.calle CLIPPED," ",vetb05.casa_num CLIPPED,vetb05.barrio CLIPPED DISPLAY BY NAME prtb08.direccion,prtb08.telefono,nombre ATTRIBUTE(BLUE) SELECT SUM(a.valor) INTO balance FROM cctb00001 a WHERE a.tipo_cliente = prtb08.tipo_cliente AND a.sec_cliente = prtb08.sec_cliente AND a.status_t IS NULL IF balance IS NULL THEN LET balance = 0 END IF DISPLAY BY NAME balance AFTER INPUT IF INT_FLAG THEN LET numero_msg = 2 CALL msg(numero_msg) LET INT_FLAG = FALSE RETURN END IF END INPUT LET p_totales.sub_total = 0 LET prtb08.cantidad_i = 0 LET prtb08.precio_i = 0 LET prtb08.cantidad_mo = 0 LET prtb08.precio_mo = 0 LET prtb08.transporte = 0 LET prtb08.itbis = 0 LET p_totales.total_v = 0 INPUT ARRAY arr_prtb08 FROM s_pedido.* BEFORE ROW LET curr = arr_curr() LET scr_l = scr_line() LET sub_total = 0 BEFORE FIELD cod_n LET arr_prtb08[curr].fila = arr_curr() DISPLAY arr_prtb08[curr].fila TO s_pedido[scr_l].fila AFTER FIELD cod_sec LET descrip_esp = NULL LET p_totales.unidad_med = NULL IF arr_prtb08[curr].cod_sec IS NOT NULL THEN SELECT a.descrip_esp, a.unidad_med INTO descrip_esp,p_totales.unidad_med FROM iptb00002 a WHERE a.cod_n = arr_prtb08[curr].cod_n AND a.cod_tipo = arr_prtb08[curr].cod_tipo AND a.cod_grupo = arr_prtb08[curr].cod_grupo AND a.cod_sec = arr_prtb08[curr].cod_sec AND a.status_t IS NULL IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_n END IF DISPLAY BY NAME descrip_esp,p_totales.unidad_med LET p_costos1 = 0 SELECT MAX(precio) INTO p_costos1 FROM vetb00025 a WHERE a.tipo_cliente = prtb08.tipo_cliente AND a.sec_cliente = prtb08.sec_cliente AND a.cod_n = arr_prtb08[curr].cod_n AND a.cod_grupo = arr_prtb08[curr].cod_grupo AND a.cod_tipo = arr_prtb08[curr].cod_tipo AND a.cod_sec = arr_prtb08[curr].cod_sec AND a.status_t IS NULL IF STATUS = NOTFOUND THEN SELECT MAX(precio) INTO p_costos1 FROM vetb00025 a WHERE a.tipo_cliente IS NULL AND a.cod_n = arr_prtb08[curr].cod_n AND a.cod_tipo = arr_prtb08[curr].cod_tipo AND a.cod_grupo = arr_prtb08[curr].cod_grupo AND a.cod_sec = arr_prtb08[curr].cod_sec AND a.status_t IS NULL IF STATUS = NOTFOUND THEN LET numero_msg = 85 CALL msg(numero_msg) NEXT FIELD cod_n END IF END IF LET arr_prtb08[curr].precio = p_costos1 DISPLAY arr_prtb08[curr].precio TO s_pedido[scr_l].precio END IF AFTER FIELD terminacion IF arr_prtb08[curr].terminacion IS NOT NULL THEN IF arr_prtb08[curr].terminacion <> "R" AND arr_prtb08[curr].terminacion <> "P" THEN NEXT FIELD terminacion END IF END IF DISPLAY arr_prtb08[curr].terminacion TO s_pedido[scr_l].terminacion ATTRIBUTE(BLUE) AFTER FIELD bisel { IF arr_prtb08[curr].bisel IS NOT NULL THEN IF arr_prtb08[curr].bisel <> "DBN" AND arr_prtb08[curr].bisel <> "SDN" THEN NEXT FIELD bisel END IF END IF } DISPLAY arr_prtb08[curr].bisel TO s_pedido[scr_l].bisel ATTRIBUTE(BLUE) AFTER FIELD cantidad IF arr_prtb08[curr].cantidad IS NULL OR arr_prtb08[curr].cantidad < 0 THEN LET arr_prtb08[curr].descuento = 0 END IF AFTER FIELD precio IF arr_prtb08[curr].precio IS NULL OR arr_prtb08[curr].precio < 0 THEN LET arr_prtb08[curr].descuento = 0 END IF BEFORE FIELD descuento LET monto_desc = 0 LET total1 = 0 AFTER FIELD descuento IF arr_prtb08[curr].descuento IS NULL THEN LET arr_prtb08[curr].descuento = 0 END IF LET monto_desc = (arr_prtb08[curr].precio * arr_prtb08[curr].cantidad) * (arr_prtb08[curr].descuento /100) LET total1 = (arr_prtb08[curr].precio * arr_prtb08[curr].cantidad) - monto_desc LET arr_prtb08[curr].total_p = total1 LET p_totales.sub_total = p_totales.sub_total + arr_prtb08[curr].total_p DISPLAY arr_prtb08[curr].total_p TO s_pedido[scr_l].total_p DISPLAY BY NAME p_totales.sub_total AFTER ROW LET p_totales.sub_total = 0 FOR idx = 1 TO arr_count() IF arr_prtb08[idx].total_p IS NOT NULL THEN LET p_totales.sub_total = p_totales.sub_total + arr_prtb08[idx].total_p END IF END FOR DISPLAY BY NAME p_totales.sub_total AFTER INPUT IF INT_FLAG THEN LET numero_msg = 2 CALL msg(numero_msg) LET INT_FLAG = FALSE RETURN END IF LET p_totales.sub_total = 0 FOR idx = 1 TO arr_count() IF arr_prtb08[idx].total_p IS NOT NULL THEN LET p_totales.sub_total = p_totales.sub_total + arr_prtb08[idx].total_p END IF END FOR EXIT INPUT END INPUT DISPLAY BY NAME p_totales.sub_total INPUT BY NAME prtb08.cantidad_i,prtb08.precio_i,prtb08.cantidad_mo, prtb08.precio_mo,prtb08.transporte,prtb08.itbis WITHOUT DEFAULTS AFTER FIELD cantidad_i IF prtb08.cantidad_i IS NULL THEN LET prtb08.cantidad_i = 0 END IF AFTER FIELD precio_i IF prtb08.precio_i IS NULL THEN LET prtb08.precio_i = 0 END IF LET total_i = (prtb08.cantidad_i * prtb08.precio_i) AFTER FIELD cantidad_mo IF prtb08.cantidad_mo IS NULL THEN LET prtb08.cantidad_mo = 0 END IF AFTER FIELD precio_mo IF prtb08.precio_mo IS NULL THEN LET prtb08.precio_mo = 0 END IF LET total_mo = (prtb08.cantidad_mo * prtb08.precio_mo) AFTER FIELD transporte LET sub_total = (total_i + total_mo)+ p_totales.sub_total LET sub_total1 = sub_total + prtb08.transporte #-> Bsuca el itbis disponible para la fecha actual vg IF prtb08.tipo_cliente <> 13 THEN SELECT i.itbi/100 INTO f_itbis FROM vetb00019 i WHERE i.disponible = "S" LET prtb08.itbis = (sub_total1 * f_itbis) ELSE LET prtb08.itbis = 0 END IF DISPLAY BY NAME prtb08.itbis LET p_totales.total_v = sub_total1 + prtb08.itbis DISPLAY BY NAME p_totales.total_v AFTER INPUT IF INT_FLAG THEN LET numero_msg = 2 CALL msg(numero_msg) LET INT_FLAG = FALSE RETURN END IF EXIT INPUT END INPUT PROMPT "TODA LA INFORMACION ESTA CORRECTA? " FOR opt4 LET opt4 = upshift(opt4) IF opt4 = "S" THEN SELECT MAX(num_oc) INTO ult_numero FROM prtb00012 IF ult_numero IS NULL THEN LET ult_numero = 0 END IF LET ult_numero = ult_numero + 1 LET prtb08.num_oc = ult_numero DISPLAY BY NAME prtb08.num_oc SLEEP 2 START REPORT o_pedido TO "c:\\ordenp" #->LET prtb08.nombre_file = prtb08.nombre_file CLIPPED, ".BMP" LET prtb08.fecha_cierre = NULL #-> Actualiza archivo para el monitoreo de las ordenes vg Wednesday, 14 February, 2001 LET prtb09.num_oc = prtb08.num_oc LET prtb09.fecha = prtb08.fecha_oc LET prtb09.pendiente = "S" LET prtb09.detalle = "SE GENERO LA ORDEN DE PEDIDO" LET prtb09.status_t = NULL INSERT INTO prtb00012 VALUES (prtb08.*) INSERT INTO prtb00009 VALUES (prtb09.*) UPDATE prtb00012 SET us_crea = USER, fech_crea = CURRENT WHERE @num_oc = prtb08.num_oc UPDATE prtb00009 SET us_crea = USER, fech_crea = CURRENT WHERE @num_oc = prtb09.num_oc # SE ESTA VALIDANDO EL PRODUCTO TERMINADO EN EL CODIGO DE LA MATERIA PRIMA # PARA CUANDO LA ORDEN SEA PARA PRODUCTOS IMPORTADOS QUE NO TIENEN COMPOSICION FOR idx = 1 TO arr_count() IF arr_prtb08[idx].total_p IS NOT NULL THEN INSERT INTO prtb00013 VALUES (prtb08.num_oc, arr_prtb08[idx].cod_n, arr_prtb08[idx].cod_grupo, arr_prtb08[idx].cod_tipo, arr_prtb08[idx].cod_sec, arr_prtb08[idx].altura_zocalo, arr_prtb08[idx].terminacion, arr_prtb08[idx].bisel, arr_prtb08[idx].precio, arr_prtb08[idx].cantidad, arr_prtb08[idx].descuento, null,user,current,null,null) OUTPUT TO REPORT o_pedido(prtb08.num_oc,arr_prtb08[idx].*) END IF END FOR FINISH REPORT o_pedido RUN "TYPE c:\\ordenp > LPT4" RUN "TYPE c:\\ordenp > LPT5" LET numero_msg = 1 CALL msg(numero_msg) ELSE GOTO vuelve END IF CLEAR FORM END FUNCTION FUNCTION prpcmf008() ## Aqui se prepara para la captura del criterio de seleccion CONSTRUCT BY NAME criterio ON a.num_oc IF INT_FLAG THEN LET numero_msg = 2 CALL msg(numero_msg) LET INT_FLAG = FALSE RETURN END IF LET SELEC = " SELECT UNIQUE a.* FROM prtb00012 a ", " WHERE ",criterio CLIPPED, " AND a.status_t IS NULL " PREPARE busca FROM selec DECLARE datos SCROLL CURSOR FOR busca OPEN datos FETCH FIRST datos INTO prtb08.* IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF SELECT SUM(a.valor) INTO balance FROM cctb00001 a WHERE a.tipo_cliente = prtb08.tipo_cliente AND a.sec_cliente = prtb08.sec_cliente AND a.status_t IS NULL IF balance IS NULL THEN LET balance = 0 END IF SELECT a.telefono, a.fax INTO prtb08.telefono, prtb08.fax FROM vetb00004 a WHERE a.tipo_cliente = prtb08.tipo_cliente AND a.sec_cliente = prtb08.sec_cliente SELECT b.calle,b.casa_num,b.barrio,b.urbanizacion INTO fcalle,fcasa_num,fbarrio,furbanizacion FROM vetb00005 b WHERE b.tipo_cliente = prtb08.tipo_cliente AND b.sec_cliente = prtb08.sec_cliente LET prtb08.direccion = fcalle CLIPPED,",",fcasa_num CLIPPED,",", fbarrio CLIPPED,",",furbanizacion CLIPPED DISPLAY BY NAME prtb08.num_oc,prtb08.fecha_oc,prtb08.tipo_cliente, prtb08.sec_cliente,prtb08.direccion,prtb08.telefono, prtb08.fax,prtb08.fecha_entrega,prtb08.cond_pago, balance,prtb08.cantidad_i,prtb08.precio_i,prtb08.cantidad_mo, prtb08.precio_mo,prtb08.transporte,prtb08.itbis,prtb08.sec_vend ATTRIBUTE(BLUE) CALL busca_cliente8m() CALL busca_vendm8() #CALL limpia8() CALL busca_detalle8() LET sub_total1 = sub_total + (prtb08.cantidad_i * prtb08.precio_i) + (prtb08.cantidad_mo * prtb08.precio_mo) + prtb08.transporte LET p_totales.total_v = sub_total1 + prtb08.itbis DISPLAY BY NAME p_totales.total_v MENU "OPCIONES " COMMAND "Siguiente" "Presenta en pantalla el proprtb08.mo registro encontrado" FETCH NEXT datos INTO prtb08.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) NEXT OPTION "anterior" END IF SELECT SUM(a.valor) INTO balance FROM cctb00001 a WHERE a.tipo_cliente = prtb08.tipo_cliente AND a.sec_cliente = prtb08.sec_cliente AND a.status_t IS NULL IF balance IS NULL THEN LET balance = 0 END IF SELECT a.telefono, a.fax INTO prtb08.telefono, prtb08.fax FROM vetb00004 a WHERE a.tipo_cliente = prtb08.tipo_cliente AND a.sec_cliente = prtb08.sec_cliente SELECT b.calle,b.casa_num,b.barrio,b.urbanizacion INTO fcalle,fcasa_num,fbarrio,furbanizacion FROM vetb00005 b WHERE b.tipo_cliente = prtb08.tipo_cliente AND b.sec_cliente = prtb08.sec_cliente LET prtb08.direccion = fcalle CLIPPED,",",fcasa_num CLIPPED,",", fbarrio CLIPPED,",",furbanizacion CLIPPED DISPLAY BY NAME prtb08.num_oc,prtb08.fecha_oc,prtb08.tipo_cliente, prtb08.sec_cliente,prtb08.direccion,prtb08.telefono, prtb08.fax,prtb08.fecha_entrega,prtb08.cond_pago, balance,prtb08.cantidad_i,prtb08.precio_i,prtb08.cantidad_mo, prtb08.precio_mo,prtb08.transporte,prtb08.itbis,prtb08.sec_vend ATTRIBUTE(BLUE) CALL busca_cliente8m() CALL busca_vendm8() #CALL limpia8() CALL busca_detalle8() LET sub_total1 = sub_total + (prtb08.cantidad_i * prtb08.precio_i) + (prtb08.cantidad_mo * prtb08.precio_mo) + prtb08.transporte LET p_totales.total_v = sub_total1 + prtb08.itbis DISPLAY BY NAME p_totales.total_v COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO prtb08.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) NEXT OPTION "siguiente" END IF SELECT SUM(a.valor) INTO balance FROM cctb00001 a WHERE a.tipo_cliente = prtb08.tipo_cliente AND a.sec_cliente = prtb08.sec_cliente AND a.status_t IS NULL IF balance IS NULL THEN LET balance = 0 END IF SELECT a.telefono, a.fax INTO prtb08.telefono, prtb08.fax FROM vetb00004 a WHERE a.tipo_cliente = prtb08.tipo_cliente AND a.sec_cliente = prtb08.sec_cliente SELECT b.calle,b.casa_num,b.barrio,b.urbanizacion INTO fcalle,fcasa_num,fbarrio,furbanizacion FROM vetb00005 b WHERE b.tipo_cliente = prtb08.tipo_cliente AND b.sec_cliente = prtb08.sec_cliente LET prtb08.direccion = fcalle CLIPPED,",",fcasa_num CLIPPED,",", fbarrio CLIPPED,",",furbanizacion CLIPPED DISPLAY BY NAME prtb08.num_oc,prtb08.fecha_oc,prtb08.tipo_cliente, prtb08.sec_cliente,prtb08.direccion,prtb08.telefono, prtb08.fax,prtb08.fecha_entrega,prtb08.cond_pago, balance,prtb08.cantidad_i,prtb08.precio_i,prtb08.cantidad_mo, prtb08.precio_mo,prtb08.transporte,prtb08.itbis,prtb08.sec_vend ATTRIBUTE(BLUE) CALL busca_cliente8m() CALL busca_vendm8() #CALL limpia8() CALL busca_detalle8() LET sub_total1 = sub_total + (prtb08.cantidad_i * prtb08.precio_i) + (prtb08.cantidad_mo * prtb08.precio_mo) + prtb08.transporte LET p_totales.total_v = sub_total1 + prtb08.itbis DISPLAY BY NAME p_totales.total_v COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO prtb08.* SELECT SUM(a.valor) INTO balance FROM cctb00001 a WHERE a.tipo_cliente = prtb08.tipo_cliente AND a.sec_cliente = prtb08.sec_cliente AND a.status_t IS NULL IF balance IS NULL THEN LET balance = 0 END IF SELECT a.telefono, a.fax INTO prtb08.telefono, prtb08.fax FROM vetb00004 a WHERE a.tipo_cliente = prtb08.tipo_cliente AND a.sec_cliente = prtb08.sec_cliente SELECT b.calle,b.casa_num,b.barrio,b.urbanizacion INTO fcalle,fcasa_num,fbarrio,furbanizacion FROM vetb00005 b WHERE b.tipo_cliente = prtb08.tipo_cliente AND b.sec_cliente = prtb08.sec_cliente LET prtb08.direccion = fcalle CLIPPED,",",fcasa_num CLIPPED,",", fbarrio CLIPPED,",",furbanizacion CLIPPED DISPLAY BY NAME prtb08.num_oc,prtb08.fecha_oc,prtb08.tipo_cliente, prtb08.sec_cliente,prtb08.direccion,prtb08.telefono, prtb08.fax,prtb08.fecha_entrega,prtb08.cond_pago, balance,prtb08.cantidad_i,prtb08.precio_i,prtb08.cantidad_mo, prtb08.precio_mo,prtb08.transporte,prtb08.itbis,prtb08.sec_vend ATTRIBUTE(BLUE) CALL busca_cliente8m() CALL busca_vendm8() #CALL limpia8() CALL busca_detalle8() LET sub_total1 = sub_total + (prtb08.cantidad_i * prtb08.precio_i) + (prtb08.cantidad_mo * prtb08.precio_mo) + prtb08.transporte LET p_totales.total_v = sub_total1 + prtb08.itbis DISPLAY BY NAME p_totales.total_v NEXT OPTION "primero" COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO prtb08.* SELECT SUM(a.valor) INTO balance FROM cctb00001 a WHERE a.tipo_cliente = prtb08.tipo_cliente AND a.sec_cliente = prtb08.sec_cliente AND a.status_t IS NULL IF balance IS NULL THEN LET balance = 0 END IF SELECT a.telefono, a.fax INTO prtb08.telefono, prtb08.fax FROM vetb00004 a WHERE a.tipo_cliente = prtb08.tipo_cliente AND a.sec_cliente = prtb08.sec_cliente SELECT b.calle,b.casa_num,b.barrio,b.urbanizacion INTO fcalle,fcasa_num,fbarrio,furbanizacion FROM vetb00005 b WHERE b.tipo_cliente = prtb08.tipo_cliente AND b.sec_cliente = prtb08.sec_cliente LET prtb08.direccion = fcalle CLIPPED,",",fcasa_num CLIPPED,",", fbarrio CLIPPED,",",furbanizacion CLIPPED DISPLAY BY NAME prtb08.num_oc,prtb08.fecha_oc,prtb08.tipo_cliente, prtb08.sec_cliente,prtb08.direccion,prtb08.telefono, prtb08.fax,prtb08.fecha_entrega,prtb08.cond_pago, balance,prtb08.cantidad_i,prtb08.precio_i,prtb08.cantidad_mo, prtb08.precio_mo,prtb08.transporte,prtb08.itbis,prtb08.sec_vend ATTRIBUTE(BLUE) CALL busca_cliente8m() CALL busca_vendm8() #CALL limpia8() CALL busca_detalle8() NEXT OPTION "anterior" COMMAND KEY ("N") "aNular" PROMPT "Esta seguro?" FOR esta LET esta = UPSHIFT(esta) IF esta = "S" THEN LET prtb09.num_oc = prtb08.num_oc LET prtb09.fecha = prtb08.fecha_oc LET prtb09.pendiente = "S" LET prtb09.detalle = "SE CANCELO LA ORDEN DE PEDIDO" LET prtb09.status_t = "E" INSERT INTO prtb00009 VALUES (prtb09.*) UPDATE prtb00012 set status_t = "E", us_mod = user, fech_mod = current WHERE num_oc = prtb08.num_oc UPDATE prtb00009 SET us_crea = user, fech_crea = current WHERE num_oc = prtb08.num_oc AND us_crea IS NULL LET numero_msg = 39 CALL msg(numero_msg) END IF COMMAND "Retornar" "Retorna al menu anterior" EXIT MENU END MENU END FUNCTION FUNCTION limpia8() FOR idx = 1 TO 10 LET arr_prtb08[idx].fila = NULL LET arr_prtb08[idx].cod_n = NULL LET arr_prtb08[idx].cod_grupo = NULL LET arr_prtb08[idx].cod_tipo = NULL LET arr_prtb08[idx].cod_sec = NULL LET arr_prtb08[idx].bisel = NULL LET arr_prtb08[idx].cantidad = NULL LET arr_prtb08[idx].precio = NULL LET arr_prtb08[idx].descuento = NULL LET arr_prtb08[idx].total_p = NULL END FOR FOR idx = 1 TO 10 DISPLAY arr_prtb08[idx].fila TO s_pedido[idx].fila DISPLAY arr_prtb08[idx].cod_n TO s_pedido[idx].cod_n DISPLAY arr_prtb08[idx].cod_grupo TO s_pedido[idx].cod_grupo DISPLAY arr_prtb08[idx].cod_tipo TO s_pedido[idx].cod_tipo DISPLAY arr_prtb08[idx].cod_sec TO s_pedido[idx].cod_sec DISPLAY arr_prtb08[idx].bisel TO s_pedido[idx].bisel DISPLAY arr_prtb08[idx].cantidad TO s_pedido[idx].cantidad DISPLAY arr_prtb08[idx].precio TO s_pedido[idx].precio DISPLAY arr_prtb08[idx].descuento TO s_pedido[idx].descuento DISPLAY arr_prtb08[idx].total_p TO s_pedido[idx].total_p END FOR END FUNCTION FUNCTION busca_detalle8() DECLARE busca_d CURSOR FOR SELECT 1,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec," ",a.terminacion, a.bisel,a.cantidad,a.precio,a.descuento FROM prtb00013 a WHERE a.num_oc = prtb08.num_oc LET idx = 1 LET p_totales.sub_total = 0 LET p_totales.total_v = 0 FOREACH busca_d INTO arr_prtb08[idx].* IF arr_prtb08[idx].cod_n IS NOT NULL THEN SELECT a.descrip_esp,a.unidad_med INTO descrip_esp,p_totales.unidad_med FROM iptb00002 a WHERE a.cod_n = arr_prtb08[idx].cod_n AND a.cod_grupo = arr_prtb08[idx].cod_grupo AND a.cod_tipo = arr_prtb08[idx].cod_tipo AND a.cod_sec = arr_prtb08[idx].cod_sec AND a.status_t IS NULL LET monto_desc = 0 LET total1 = 0 LET monto_desc = (arr_prtb08[idx].precio * arr_prtb08[idx].cantidad) * (arr_prtb08[idx].descuento /100) LET total1 = (arr_prtb08[idx].precio * arr_prtb08[idx].cantidad) - monto_desc LET arr_prtb08[idx].total_p = total1 LET arr_prtb08[idx].fila = idx LET p_totales.sub_total = p_totales.sub_total + arr_prtb08[idx].total_p LET idx = idx + 1 END IF END FOREACH LET total_i = (prtb08.cantidad_i * prtb08.precio_i) LET total_mo = (prtb08.cantidad_mo * prtb08.precio_mo) LET sub_total = (total_i + total_mo)+ p_totales.sub_total LET sub_total1 = sub_total + prtb08.transporte LET p_totales.total_v = sub_total1 + prtb08.itbis DISPLAY ARRAY arr_prtb08 TO s_pedido.* LET idx = arr_curr() LET scr_l = scr_line() DISPLAY arr_prtb08[idx].fila TO s_pedido[scr_l].fila ATTRIBUTE(BLUE) DISPLAY arr_prtb08[idx].cod_n TO s_pedido[scr_l].cod_n DISPLAY arr_prtb08[idx].cod_grupo TO s_pedido[scr_l].cod_grupo DISPLAY arr_prtb08[idx].cod_tipo TO s_pedido[scr_l].cod_tipo DISPLAY arr_prtb08[idx].cod_sec TO s_pedido[scr_l].cod_sec DISPLAY BY NAME descrip_esp ATTRIBUTE(BLUE) DISPLAY arr_prtb08[idx].terminacion TO s_pedido[scr_l].terminacion ATTRIBUTE(BLUE) DISPLAY arr_prtb08[idx].bisel TO s_pedido[scr_l].bisel ATTRIBUTE(BLUE) DISPLAY arr_prtb08[idx].cantidad TO s_pedido[scr_l].cantidad DISPLAY arr_prtb08[idx].precio TO s_pedido[scr_l].precio ATTRIBUTE(BLUE) DISPLAY arr_prtb08[idx].descuento TO s_pedido[scr_l].descuento DISPLAY arr_prtb08[idx].total_p TO s_pedido[scr_l].total_p LET p_totales.sub_total = p_totales.sub_total + arr_prtb08[idx].total_p DISPLAY BY NAME p_totales.sub_total,p_totales.unidad_med DISPLAY BY NAME prtb08.itbis DISPLAY BY NAME p_totales.total_v END FUNCTION REPORT o_pedido(xnumero,z) DEFINE z RECORD fila SMALLINT, cod_n LIKE prtb00013.cod_n, cod_grupo LIKE prtb00013.cod_grupo, cod_tipo LIKE prtb00013.cod_tipo, cod_sec LIKE prtb00013.cod_sec, altura_zocalo LIKE prtb00013.altura_zocalo, terminacion LIKE prtb00013.terminacion, bisel LIKE prtb00013.bisel, cantidad LIKE prtb00013.cantidad, precio LIKE prtb00013.precio, descuento LIKE prtb00013.descuento, total_p DECIMAL(10,2) END RECORD, i,xnumero INTEGER, normal,comp_on,comp_off,doce,negrillas_on,negrillas_off, doble_on,doble_off CHAR(2),raya CHAR(100),rayita CHAR(35), total_inst,subtotal DEC(8,2) OUTPUT LEFT MARGIN 0 ORDER BY xnumero FORMAT PAGE HEADER LET normal = ASCII 27, ASCII 80 LET comp_on = ASCII 15 LET comp_off = ASCII 18 LET doce = ASCII 27, ascii 77 LET negrillas_on = ASCII 27, ASCII 69 LET negrillas_off = ASCII 27, ASCII 70 LET doble_on = ASCII 14 LET doble_off = ASCII 20 LET l = (90 - LENGTH(p_compania.nombre CLIPPED))/2 PRINT COLUMN l, p_compania.nombre CLIPPED, COLUMN 72, TODAY USING "DD/MM/YYYY" LET l = (90 - LENGTH("Ordenes de Pedido Corte a la Medida"))/2 PRINT COLUMN l, "ORDENES DE PEDIDOS CORTE A LA MEDIDA", COLUMN 72, TIME PRINT COLUMN 001, "ORDEN NO.: ",doble_on,xnumero USING "<<<<<<",doble_off SKIP 1 LINE PRINT COLUMN 001, "Fecha de la Orden : ",prtb08.fecha_oc USING "DD/MMM/YYYY", COLUMN 052, "Fecha de Entrega : ",prtb08.fecha_entrega USING "DD/MM/YYYY" PRINT COLUMN 001, "CLIENTE : ",nombre CLIPPED, COLUMN 052, "PAGO : " PRINT COLUMN 001, "CODIGO CLIENTE : ",prtb08.tipo_cliente USING "<<","-", prtb08.sec_cliente USING "<<<<" PRINT COLUMN 001, "Direccion : ",prtb08.direccion CLIPPED, COLUMN 062, "Recibo No. : " PRINT COLUMN 001, "Telefono : ",prtb08.telefono CLIPPED, COLUMN 052, "Fax : ",prtb08.fax CLIPPED PRINT COLUMN 001, "Condiciones : ", descrip_p CLIPPED, COLUMN 042, "Vendedor : ", prtb08.sec_vend USING "<<<<"," ", nombres CLIPPED," ",apellidos CLIPPED PRINT COLUMN 001, prtb08.ubicacion CLIPPED FOR i = 1 TO 99 LET raya[i] = "-" END FOR FOR i = 1 TO 35 LET rayita[i] = "-" END FOR PRINT doce PRINT raya PRINT COLUMN 033, "|ALTURA", COLUMN 040, "|TERMINACION" PRINT COLUMN 001, " CODIGO ", COLUMN 012, "|DESCRIPCION", COLUMN 033, "|ZOCALO|", # COLUMN 047, "|TERMINACION", COLUMN 048, "|BISEL", COLUMN 055, "|UNID.", COLUMN 062, "|CANTIDAD", COLUMN 072, "|PRECIO", COLUMN 082, "|DESC.", COLUMN 090, "|TOTAL " PRINT raya ON EVERY ROW SELECT a.descrip_esp,a.unidad_med INTO descrip_esp,p_totales.unidad_med FROM iptb00002 a WHERE a.cod_n = z.cod_n AND a.cod_grupo = z.cod_grupo AND a.cod_tipo = z.cod_tipo AND a.cod_sec = z.cod_sec PRINT COLUMN 001, z.cod_n USING "&","-",z.cod_grupo USING "&","-", z.cod_tipo USING "&&","-",z.cod_sec USING "&&&", COLUMN 012, descrip_esp wordwrap right margin 30, COLUMN 036, z.altura_zocalo USING "&.&&", COLUMN 046, z.terminacion, COLUMN 050, z.bisel CLIPPED, COLUMN 057, p_totales.unidad_med clipped, COLUMN 063, z.cantidad USING "#,###.#&", COLUMN 073, z.precio USING "#,###.#&", COLUMN 084, z.descuento USING "##.&&", COLUMN 090, z.total_p USING "###,###.&&" ON LAST ROW PRINT raya PRINT COLUMN 060, "Total Material", COLUMN 088, p_totales.sub_total USING "#,###,###.&&" SKIP 1 LINE PRINT COLUMN 075, "INSTALACION" PRINT COLUMN 065, rayita PRINT COLUMN 065,"|"," Cantidad |", COLUMN 075, " Precio |", COLUMN 085," Total " #-> PRINT COLUMN 060, rayita PRINT COLUMN 045, "Instalacion Tope", COLUMN 068, prtb08.cantidad_i USING "####.#&", COLUMN 078, prtb08.precio_i USING "#,###.#&", COLUMN 088,(prtb08.cantidad_i * prtb08.precio_i) USING "#,###,###.#&" #-> PRINT COLUMN 060, rayita PRINT COLUMN 045, "Mano de Obra", COLUMN 068, prtb08.cantidad_mo USING "####.#&", COLUMN 078, prtb08.precio_mo USING "#,###.#&", COLUMN 088,(prtb08.cantidad_mo * prtb08.precio_mo) USING "#,###,###.#&" PRINT COLUMN 065, rayita LET total_inst = (prtb08.cantidad_i * prtb08.precio_i) + (prtb08.cantidad_mo * prtb08.precio_mo) PRINT COLUMN 065, "Total Instalacion", COLUMN 088, total_inst USING "#,###,###.#&" PRINT COLUMN 060, "Transporte", COLUMN 088, prtb08.transporte USING "#,###,###.#&" PRINT COLUMN 060, "Sub-Total", COLUMN 088, p_totales.sub_total + total_inst USING "#,###,###.#&" PRINT COLUMN 060, "Itbis", COLUMN 088, prtb08.itbis USING "#,###,###.#&" PRINT COLUMN 060, "Total Ventas", COLUMN 088, p_totales.total_v USING "#,###,###.#&" PRINT normal PAGE TRAILER PRINT COLUMN 10, "-------------------", COLUMN 35, "-------------------", COLUMN 57, "-------------------" PRINT COLUMN 13, "VENDEDOR", COLUMN 39, "CLIENTE", COLUMN 61, "APROBADO POR" END REPORT FUNCTION busca_cliente8() OPEN WINDOW busqueda AT 7,12 WITH FORM "vefmwd002" ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST) LET INT_FLAG = false CONSTRUCT criterio ON a.nombre FROM nombre LET selec2 = "SELECT a.tipo_cliente, a.sec_cliente, a.nombre ", " FROM vetb00004 a", " WHERE ", "a.status_t is NULL AND ", criterio clipped, "ORDER BY 1,2 " IF INT_FLAG THEN LET numero_msg = 2 CALL msg(numero_msg) GO TO salir_consulta_c END IF PREPARE busca_cliente8s FROM selec2 IF status >= 0 THEN IF status = notfound THEN LET numero_msg = 3 CALL msg(numero_msg) END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 END IF END IF DECLARE buscar_clientes CURSOR FOR busca_cliente8s LET idx = 1 FOREACH buscar_clientes INTO arr_clientes[idx].* IF status = NOTFOUND THEN EXIT FOREACH END IF IF INT_FLAG THEN LET numero_msg = 2 CALL msg(numero_msg) EXIT FOREACH END IF LET idx = idx + 1 END FOREACH CALL set_count(idx-1) MESSAGE " Selecciona Cliente donde esta el cursor" DISPLAY ARRAY arr_clientes TO s_clientes.* LET curr1 = arr_curr() LET prtb08.tipo_cliente = arr_clientes[curr1].tipo_cliente LET prtb08.sec_cliente = arr_clientes[curr1].sec_cliente LET nombre = arr_clientes[curr1].nombre LABEL salir_consulta_c: CLOSE WINDOW busqueda END FUNCTION FUNCTION busca_cliente8m() SELECT a.nombre INTO nombre FROM vetb00004 a WHERE a.tipo_cliente = prtb08.tipo_cliente AND a.sec_cliente = prtb08.sec_cliente AND a.status_t IS NULL SELECT a.descrip INTO descrip_p FROM vetb00012 a WHERE a.cond_pago = prtb08.cond_pago AND a.status_t IS NULL DISPLAY BY NAME nombre,descrip_p ATTRIBUTE(BLUE) END FUNCTION FUNCTION busca_product8() SELECT a.descrip_esp,a.unidad_med INTO descrip_esp,unidad FROM iptb00002 a WHERE a.cod_n = prtb08.cod_n AND a.cod_grupo = prtb08.cod_grupo AND a.cod_tipo = prtb08.cod_tipo AND a.cod_sec = prtb08.cod_sec DISPLAY BY NAME unidad,descrip_esp ATTRIBUTE(BLUE) END FUNCTION FUNCTION vendedor8es() DEFINE descrip6 LIKE adtb00003.nom1_emp OPEN WINDOW busqueda2 AT 7,12 WITH FORM "vefmwd001" ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST) LET INT_FLAG = false CONSTRUCT criterio ON a.nom1_emp FROM descrip6 LET selec2 = "SELECT UNIQUE a.num_emp,a.nom1_emp,a.apell1_emp ", " FROM adtb00003 a,vetb00028 b", " WHERE a.num_emp = b.sec_vend AND ", "a.status_t is NULL AND ", criterio clipped, "ORDER BY 1 " IF INT_FLAG THEN LET numero_msg = 2 CALL msg(numero_msg) GO TO salir_consulta_e END IF PREPARE busca_empleados FROM selec2 IF status >= 0 THEN IF status = notfound THEN LET numero_msg = 3 CALL msg(numero_msg) END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 END IF END IF DECLARE buscar_empleados CURSOR FOR busca_empleados LET idx = 1 FOREACH buscar_empleados INTO arr_empleados[idx].* IF status = NOTFOUND THEN EXIT FOREACH END IF IF INT_FLAG THEN LET numero_msg = 2 CALL msg(numero_msg) EXIT FOREACH END IF LET empleados[idx].cod_emp_sec = arr_empleados[idx].num_emp LET empleados[idx].descrip6 = arr_empleados[idx].nom1_emp clipped," ",arr_empleados[idx].apell1_emp clipped LET idx = idx + 1 END FOREACH CALL set_count(idx-1) MESSAGE " Selecciona Empleado donde esta el cursor" DISPLAY ARRAY empleados TO s_empleados.* LET curr1 = scr_line() LET prtb08.sec_vend = empleados[curr1].cod_emp_sec LET nombre_vend = empleados[curr1].descrip6 LABEL salir_consulta_e: CLOSE WINDOW busqueda2 END FUNCTION FUNCTION busca_vendm8() IF prtb08.sec_vend IS NOT NULL THEN SELECT a.nom1_emp,a.apell1_emp INTO nombres,apellidos FROM adtb00003 a WHERE a.num_emp = prtb08.sec_vend LET nombre_vend = nombres CLIPPED," ",apellidos CLIPPED DISPLAY BY NAME nombre_vend ATTRIBUTE(BLUE) END IF END FUNCTION FUNCTION imprime() DEFINE codigo CHAR(7), pcodigo CHAR(10) --# CALL fgl_init4js() --# LET archivo = NULL --# LET filename = NULL --# LET filename = FGL_GETENV("USPROGRAM") --# LET archivo = "G:\\\\orden.xls" --# LET sysos = FGL_GETENV("OS") --# IF sysos = "Windows_NT" THEN --# LET filename = filename CLIPPED," G:\\\\orden.xls" --# ELSE --# LET filename = "C:\\\\ARCHIV~1\\\\MICROS~1\\\\OFFICE\\\\EXCEL.EXE G:\\\\orden.xls" --# LET localiza = "G:\\" --# LET archivo = "G:\\\\orden.xls" --# END IF --# IF winexec(filename) THEN --# IF DDEconnect("EXCEL",archivo) THEN --# LET cels = "R",1 USING "<<","C3" --# IF DDEpoke("EXCEL",archivo,cels,prtb08.num_oc) THEN --# ELSE --# LET numero_msg =391 --# CALL msg(numero_msg) --# END IF --# LET cels = "R",2 USING "<<","C3" --# IF DDEpoke("EXCEL",archivo,cels,prtb08.fecha_oc) THEN --# ELSE --# LET numero_msg =391 --# CALL msg(numero_msg) --# END IF --# LET cels = "R",3 USING "<<","C3" --# IF DDEpoke("EXCEL",archivo,cels,nombre) THEN --# ELSE --# LET numero_msg =391 --# CALL msg(numero_msg) --# END IF LET codigo = prtb08.tipo_cliente USING "<<","-", prtb08.sec_cliente USING "<<<<" --# LET cels = "R",4 USING "<<","C3" --# IF DDEpoke("EXCEL",archivo,cels,codigo) THEN --# ELSE --# LET numero_msg =391 --# CALL msg(numero_msg) --# END IF --# LET cels = "R",5 USING "<<","C3" --# IF DDEpoke("EXCEL",archivo,cels,prtb08.direccion) THEN --# ELSE --# LET numero_msg =391 --# CALL msg(numero_msg) --# END IF --# LET cels = "R",6 USING "<<","C3" --# IF DDEpoke("EXCEL",archivo,cels,prtb08.telefono) THEN --# ELSE --# LET numero_msg =391 --# CALL msg(numero_msg) --# END IF SELECT a.descrip_esp, a.unidad_med INTO descrip_esp,p_totales.unidad_med FROM iptb00002 a WHERE a.cod_n = arr_prtb08[idx].cod_n AND a.cod_tipo = arr_prtb08[idx].cod_tipo AND a.cod_grupo = arr_prtb08[idx].cod_grupo AND a.cod_sec = arr_prtb08[idx].cod_sec AND a.status_t IS NULL --# LET cels = "R",7 USING "<<","C3" --# IF DDEpoke("EXCEL",archivo,cels,descrip_p) THEN --# ELSE --# LET numero_msg =391 --# CALL msg(numero_msg) --# END IF --# LET cels = "R",8 USING "<<","C3" --# IF DDEpoke("EXCEL",archivo,cels,prtb08.fecha_entrega) THEN --# ELSE --# LET numero_msg =391 --# CALL msg(numero_msg) --# END IF --# LET cels = "R",13 USING "<<","C3" --# IF DDEpoke("EXCEL",archivo,cels,prtb08.fax) THEN --# ELSE --# LET numero_msg =391 --# CALL msg(numero_msg) --# END IF LET cnt = 16 FOR idx = 1 TO arr_count() IF arr_prtb08[idx].cod_n IS NOT NULL THEN --# LET cels = "R",cnt USING "<<<","C1" LET pcodigo = arr_prtb08[idx].cod_n USING "&","-", arr_prtb08[idx].cod_grupo USING "&","-", arr_prtb08[idx].cod_tipo USING "&&","-", arr_prtb08[idx].cod_sec USING "&&&" --# IF DDEpoke("EXCEL",archivo,cels,pcodigo) THEN --# ELSE --# LET numero_msg =391 --# CALL msg(numero_msg) --# END IF --# LET cels = "R",cnt USING "<<<","C2" --# IF DDEpoke("EXCEL",archivo,cels,descrip_esp) THEN --# ELSE --# LET numero_msg =391 --# CALL msg(numero_msg) --# END IF --# LET cels = "R",cnt USING "<<<","C5" --# IF DDEpoke("EXCEL",archivo,cels,arr_prtb08[idx].cantidad) THEN --# ELSE --# LET numero_msg =391 --# CALL msg(numero_msg) --# END IF --# LET cels = "R",cnt USING "<<<","C6" --# IF DDEpoke("EXCEL",archivo,cels,arr_prtb08[idx].bisel) THEN --# ELSE --# LET numero_msg =391 --# CALL msg(numero_msg) --# END IF --# LET cels = "R",cnt USING "<<<","C8" --# IF DDEpoke("EXCEL",archivo,cels,arr_prtb08[idx].precio) THEN --# ELSE --# LET numero_msg =391 --# CALL msg(numero_msg) --# END IF --# LET cels = "R",cnt USING "<<<","C9" --# IF DDEpoke("EXCEL",archivo,cels,arr_prtb08[idx].descuento) THEN --# ELSE --# LET numero_msg =391 --# CALL msg(numero_msg) --# END IF END IF END FOR --# END IF --# END IF END FUNCTION