{ ================================================================================ FUNCION : VECONVIERTEORDEN OBJETIVO : PASAR LAS COTIZACIONES DE FORMA AUTOAMTICA A ORDEN DE PEDIDOS PROGRAMADOR : ING. JUAN SOTO FECHA REALIZACION: 19/12/2011 ================================================================================ } SCHEMA decomarmol GLOBALS DEFINE handler om.SaxDocumentHandler, -- return value from fgl_report_commitCurrentSettings() r_filename STRING, -- filename of Report Design Document including .4rp extension r_output STRING, -- output format option preview INTEGER, -- TRUE/FALSE, to set preview option pvetb51 RECORD LIKE vetb00051.*, historico CHAR(1) DEFINE normal,negrilla_on,negrillas_of,comp_on,comp_off, doce,doble_on,doble_off CHAR(3), cmd,imprime,copia,copia1 CHAR(150), archivo,archivo1 CHAR(80), p_compania RECORD LIKE companias.*, prtb08 RECORD LIKE prtb00012.*, pvetb50 RECORD LIKE vetb00050.*, ult_numero INT, p_prtb14 RECORD LIKE prtb00014.*, producto STRING END GLOBALS FUNCTION convierteorden(xcotizacion_no,xorden,xusuario,xclave,ximpresor,xcopia,xtipo_orden) DEFINE xcotizacion_no INT, actualizar STRING, pagaITBIS VARCHAR(1), xtipo_orden VARCHAR(50), xusuario,xclave,pdescripcion,punidad CHAR(50), pcosto DEC(12,5), xorden CHAR(25), pcodn,parea,pcodgrupo,pcodtipo,pcodsec,idx,ximpresor,xcopia SMALLINT, pcantidad1,pcantidad DEC(12,4), pvetb22 RECORD LIKE vetb00022.*, pprecio DEC(12,2), pdesc DEC(8,2), pkit INT, pfecha_compromiso DATE CALL STARTLOG("veconvierte.txt") SELECT unique a.num_oc FROM prtb00012 a WHERE a.cotizacion_no = xcotizacion_no AND a.status_t IS NULL IF STATUS != NOTFOUND THEN CALL fgl_winmessage("ERROR","COTIZACION TIENE ORDEN, NO PUEDE CREAR ORDEN","STOP") RETURN 0,false END IF # CONTROL DESPIECE LET pcantidad = 0 LET pcantidad1 = 0 SELECT num_oc INTO ult_numero FROM prtb00020 IF ult_numero IS NULL THEN LET ult_numero = 0 END IF LET ult_numero = ult_numero + 1 #BEGIN WORK UPDATE prtb00020 set num_oc = ult_numero, us_crea = xusuario, fech_crea = GETDATE() SELECT a.tipo_cliente,a.nombre_cliente,a.nombre_proyecto,a.cotizacion_no,CONVERT(CHAR(10),a.fecha_entrega,103) INTO pvetb50.tipo_cliente,pvetb50.nombre_cliente,pvetb50.nombre_proyecto,pvetb50.cotizacion_no, pfecha_compromiso FROM vetb00050 a WHERE a.cotizacion_no =xcotizacion_no LET actualizar = " INSERT INTO prtb00012 (ventas,cotizacion_no,num_oc,fecha_oc,nombre_file,sec_vend,tipo_cliente, sec_cliente,direccion,telefono,fax,cond_pago,ubicacion,cerrada,us_crea,fech_crea,tipo_orden,num_emp_inst) SELECT ventas,'",xcotizacion_no, "','",ult_numero, "','",CURRENT,"','", xorden CLIPPED,"',sec_vend,tipo_cliente,sec_cliente,direccion_cliente, ", "telefono_r,fax,cond_pago,direccion_proyecto,'N',SUSER_SNAME(),GETDATE(), '",xtipo_orden CLIPPED,"', num_emp_inst ", "FROM vetb00050 WHERE cotizacion_no=",xcotizacion_no PREPARE xvetb50 FROM actualizar EXECUTE xvetb50 IF STATUS < 0 THEN # ROLLBACK WORK RETURN 0,FALSE END IF LET idx = 1 LET actualizar= "SELECT a.num_oc,CONVERT(CHAR(10),a.fecha_oc,103),a.direccion,a.sec_vend,a.tipo_cliente,a.sec_cliente, ", " a.ubicacion,a.cond_pago,a.nombre_file ", "FROM prtb00012 a WHERE a.num_oc ='", ult_numero,"'" PREPARE xprtb12 FROM actualizar EXECUTE xprtb12 INTO prtb08.num_oc,prtb08.fecha_oc,prtb08.direccion,prtb08.sec_vend, prtb08.tipo_cliente,prtb08.sec_cliente,prtb08.ubicacion, prtb08.cond_pago,prtb08.nombre_file IF STATUS < 0 THEN # ROLLBACK WORK RETURN 0,FALSE END IF DECLARE xvetb22 CURSOR FOR SELECT a.* FROM vetb00022 a WHERE a.cotizacion_no = xcotizacion_no FOREACH xvetb22 INTO pvetb22.* IF pvetb22.etiqueta IS NOT NULL THEN INSERT INTO prtb00022 (num_oc,etiqueta,secuencia,area,cod_n,cod_grupo,cod_tipo,cod_sec, lado_1,lado_2,lado_3,cantidad,medida) VALUES (ult_numero,pvetb22.etiqueta,pvetb22.secuencia,pvetb22.area, pvetb22.cod_n,pvetb22.cod_grupo, pvetb22.cod_tipo,pvetb22.cod_sec,pvetb22.lado_1, pvetb22.lado_2,pvetb22.lado_3,pvetb22.cantidad,pvetb22.medida) IF STATUS < 0 THEN # ROLLBACK WORK RETURN 0,FALSE END IF END IF END FOREACH CALL defecto(xusuario,xclave,ximpresor) RETURNING imprime,negrilla_on,negrillas_of, doble_on,doble_off,comp_on,comp_off, doce,normal,archivo,copia1 { IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file CALL fgl_report_selectDevice(r_output) -- changing default CALL fgl_report_selectPreview(preview) -- changing default # CALL fgl_winmessage("veprrp049",r_output,"stop") # CALL fgl_winmessage("veprrp049",preview,"stop") LET handler = fgl_report_commitCurrentSettings() -- commit changes END IF --run the report IF handler IS NOT NULL THEN } -- report engine was configured ok CALL seleccionarsalida() RETURNING r_output #LET r_output='PDF' LET preview = TRUE LET r_filename ="orden.4rp" IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file CALL fgl_report_selectDevice(r_output) -- changing default CALL fgl_report_selectPreview(preview) -- changing default LET handler = fgl_report_commitCurrentSettings() -- commit changes END IF START REPORT o_pedido1 TO XML HANDLER handler CALL oc_detalles() DECLARE xvetb51 CURSOR FOR SELECT a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.cantidad_1,a.cantidad, b.descrip_esp,b.unidad_med,a.precio,a.porc_Desc,a.id_kit FROM vetb00051 a,iptb00002 b WHERE a.cotizacion_no = xcotizacion_no AND a.cod_n = b.cod_n AND a.cod_Grupo = b.cod_grupo AND a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_Sec AND a.id_kit IS NULL UNION SELECT a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.cantidad,a.cantidad, b.descrip_esp,b.unidad_med,a.precio,a.porc_Desc,a.id_kit FROM vetb00031 a,iptb00002 b WHERE a.cotizacion_no = xcotizacion_no AND a.cod_n = b.cod_n AND a.cod_Grupo = b.cod_grupo AND a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_Sec AND a.cod_n = 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.id_kit IS NOT NULL FOREACH xvetb51 INTO parea,pcodn,pcodgrupo,pcodtipo,pcodsec, pcantidad1,pcantidad,pdescripcion,punidad,pprecio, pdesc,pkit #BUSCA COSTO LET pcosto = 0 IF pcodn <> 25 OR pcodn <> 12 OR pcodn <> 5 THEN SELECT AVG(a.material+a.labor+gastos) INTO pcosto FROM iptb00004 a WHERE a.ano = YEAR(today) AND (a.cod_n = pcodn AND a.cod_grupo = pcodgrupo AND a.cod_tipo = pcodtipo AND a.cod_Sec = pcodsec) AND a.status_t IS NULL { IF pcosto = 0 THEN ROLLBACK WORK LET producto = pcodn USING "&&&&","-",pcodgrupo USING "&&&&", pcodtipo USING "&&&&", pcodsec USING "&&&&", " NO TIENE COSTO, FAVOR DE INFORMAR A FINANZAS, NO SE ADICIONO LA ORDEN" CALL fgl_winmessage("INFO",producto,"info") RETURN 0,FALSE END IF} ELSE LET pcosto = (pprecio * (pdesc/100)) - pprecio END IF INSERT INTO prtb00013 (num_oc,secuencia,area,cod_n,cod_grupo,cod_tipo,cod_sec, cantidad,us_crea,fech_crea,precio,descuento,id_kit,costo) VALUES (ult_numero,idx,parea,pcodn,pcodgrupo,pcodtipo,pcodsec, pcantidad,SUSER_SNAME(),GETDATE(),pprecio,pdesc,pkit,pcosto) IF STATUS < 0 THEN # ROLLBACK WORK RETURN 0,FALSE END IF INSERT INTO prtb00023 (num_oc,secuencia,area,cod_n,cod_grupo,cod_tipo,cod_sec, cantidad_1,cantidad,id_kit) VALUES (ult_numero,idx,parea,pcodn,pcodgrupo,pcodtipo,pcodsec, pcantidad1,pcantidad,pkit) IF STATUS < 0 THEN # ROLLBACK WORK RETURN 0,FALSE END IF OUTPUT TO REPORT o_pedido1(ult_numero,idx,parea,pcodn,pcodgrupo,pcodtipo, pcodsec,pdescripcion,punidad,pcantidad1,pcantidad, pprecio,pdesc,p_prtb14.*,xcotizacion_no,pkit) LET idx = idx + 1 END FOREACH {CREACION REGISTRO EN LA TABLA CODIGOS MADRES KIT EN LA ORDEN DE PEDIDOS} LET actualizar = " INSERT INTO prtb00031 ", " (num_oc ", " ,cotizacion_no ", " ,id_kit ", " ,secuencia ", " ,area ", " ,cod_n ", " ,cod_grupo ", " ,cod_tipo ", " ,cod_sec ", " ,cantidad ", " ,us_crea ", " ,fech_crea) ", "SELECT '", ult_numero USING "<<<<<<<<","'", ",a.cotizacion_no ", ",a.id_kit ", ",a.secuencia ", ",a.area ", ",a.cod_n ", ",a.cod_grupo ", ",a.cod_tipo ", ",a.cod_sec ", ",a.cantidad ", ",a.us_crea ", ",a.fech_crea ", " FROM vetb00051 a WHERE a.cotizacion_no = ",xcotizacion_no, " and a.id_kit IS NOT NULL " PREPARE kits_orden FROM actualizar EXECUTE kits_orden INSERT INTO prordenstatus(fecha_trx,num_oc,cerrada,observacion,fecha_compromiso,usuario) VALUES (GETDATE(),ult_numero,'N','CREACION ORDEN',pfecha_compromiso,xusuario) #COMMIT WORK FINISH REPORT o_pedido1 RUN imprime LET archivo1 = archivo {CALL defecto(xusuario,xclave,xcopia) RETURNING imprime,negrilla_on,negrillas_of, doble_on,doble_off,comp_on,comp_off, doce,normal,archivo,copia1 LET cmd = "TYPE ",archivo1 CLIPPED," ",copia1 RUN cmd} { ELSE EXIT PROGRAM END IF} # INSERTA ORDEN EN OTRA DB ########################################## # BUSCA SI EL CLIENTE DEBE IR A LA OTRA BASE DE DATOS { SE COLOCO EN COMENTARIO, YA QUE EL PROCESO DABA ERRORES AL PASAR LA DATA A LA OTRA BASE DE DATOS, EL PROGRAMA DEL PUNTO DE VENTAS VEPRMT022 TIENE LA TRANSFERENCIA DE LA ORDEN QUE VAN A FACTURAR EN EL MOMENTO } SELECT a.ncf INTO pagaITBIS FROM vetb00060 A WHERE a.tipo_cliente = pvetb50.tipo_cliente IF pagaITBIS = 'S' THEN SET CONNECTION "IFMX" LET actualizar = " INSERT INTO prtb00012 (ventas,cotizacion_no,num_oc,fecha_oc,nombre_file,sec_vend,tipo_cliente, sec_cliente,direccion,telefono,fax,cond_pago,ubicacion,cerrada,us_crea)", "SELECT ventas,'",xcotizacion_no, "','",ult_numero USING "<<<<<<<<", "',fecha,'", xorden CLIPPED,"',sec_vend,tipo_cliente,sec_cliente,direccion_cliente, ", "telefono_r,fax,cond_pago,direccion_proyecto,'N','",xusuario CLIPPED,"' ", " FROM vetb00050 WHERE cotizacion_no='",xcotizacion_no USING "<<<<<<<","'" PREPARE xfvetb50 FROM actualizar EXECUTE xfvetb50 IF STATUS < 0 THEN CALL fgl_winmessage("ERROR","NO PUDE ADICIONAR LA ORDEN, EXISTE PROBLEMAS","STOP") RETURN 0,FALSE END IF LET idx = 1 LET actualizar= "SELECT a.num_oc,CONVERT(CHAR(10),a.fecha_oc,103),a.direccion,a.sec_vend,a.tipo_cliente,a.sec_cliente, ", " a.ubicacion,a.cond_pago,a.nombre_file ", "FROM prtb00012 a WHERE a.num_oc ='", ult_numero,"'" PREPARE xfprtb12 FROM actualizar EXECUTE xfprtb12 INTO prtb08.num_oc,prtb08.fecha_oc,prtb08.direccion,prtb08.sec_vend, prtb08.tipo_cliente,prtb08.sec_cliente,prtb08.ubicacion, prtb08.cond_pago,prtb08.nombre_file IF STATUS < 0 THEN CALL fgl_winmessage("ERROR","NO PUDE ADICIONAR LA ORDEN, EXISTE PROBLEMAS","STOP") RETURN 0,FALSE END IF DECLARE xfvetb51 CURSOR FOR SELECT a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.cantidad_1,a.cantidad, b.descrip_esp,b.unidad_med,a.precio,a.porc_Desc FROM vetb00051 a,iptb00002 b WHERE a.cotizacion_no = xcotizacion_no AND a.cod_n = b.cod_n AND a.cod_Grupo = b.cod_grupo AND a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_Sec FOREACH xfvetb51 INTO parea,pcodn,pcodgrupo,pcodtipo,pcodsec, pcantidad1,pcantidad,pdescripcion,punidad,pprecio, pdesc INSERT INTO prtb00013 (num_oc,secuencia,cod_n,cod_grupo,cod_tipo,cod_sec, cantidad,precio,descuento) VALUES (ult_numero,idx,pcodn,pcodgrupo,pcodtipo,pcodsec, pcantidad,pprecio,pdesc) IF STATUS < 0 THEN CALL fgl_winmessage("ERROR","NO PUDE ADICIONAR LA ORDEN, EXISTE PROBLEMAS","STOP") RETURN 0,FALSE END IF LET idx = idx + 1 END FOREACH END IF #------------------------------------------------------------------------------------ RETURN ult_numero,TRUE END FUNCTION {REPORT o_pedido1(xnumero,z,y,jcotizacion_no,xkit) 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, cantidad_1 DEC(12,4), cantidad DEC(12,4), precio DEC(12,2), porc_desc DEC(8,2) END RECORD, y RECORD LIKE prtb00014.*, l smallint, jcotizacion_no,xkit INT, i,xnumero INTEGER, normal,comp_on,comp_off,doce,negrillas_on,negrillas_off, doble_on,doble_off CHAR(2),raya CHAR(120),rayita CHAR(35), total_gral,total_inst,subtotal,descuento,total_p DEC(12,2), ult_pago INTEGER, plado1,plado2,plado3,pcantidad,pmedida,total_unidades DEC(12,5), etiqueta,prnc,ptelefono,xnumrnc CHAR(20), descrip_p,nombres,apellidos CHAR(50), descrip_area CHAR(40) OUTPUT LEFT MARGIN 0 ORDER BY z.area,z.cod_n,z.cod_grupo,z.cod_tipo,z.cod_sec FORMAT PAGE HEADER LET normal = ASCII 27, ASCII 80 LET comp_on = ASCII 15 LET comp_off = ASCII 18 LET doce = ASCII 27, ascii 77 LET negrillas_on = ASCII 27, ASCII 69 LET negrillas_off = ASCII 27, ASCII 70 LET doble_on = ASCII 14 LET doble_off = ASCII 20 SELECT a.* INTO p_compania.* FROM companias a LET l = (90 - LENGTH(p_compania.nombre CLIPPED))/2 PRINT comp_on PRINT COLUMN l, p_compania.nombre CLIPPED, COLUMN 72, TODAY USING "DD/MM/YYYY" LET l = (100 - LENGTH("Ordenes de Pedido Corte a la Medida"))/2 PRINT COLUMN l, "ORDENES DE PEDIDOS", COLUMN 72, TIME LET prnc ="RNC:",p_compania.rnc LET l = (90 - LENGTH(prnc))/2 PRINT COLUMN l, prnc LET l = (90 - LENGTH(p_compania.direccion))/2 PRINT COLUMN l, p_compania.direccion LET ptelefono = p_compania.telefono LET l = (90 - LENGTH(ptelefono))/2 PRINT COLUMN l, ptelefono PRINT COLUMN 001, "ORDEN NO.: ",doble_on,xnumero USING "<<<<<<",doble_off SKIP 1 LINE PRINT COLUMN 001, "Fecha de la Orden : ",prtb08.fecha_oc USING "DD/MMM/YYYY", COLUMN 62, "Fecha de Entrega : ",prtb08.fecha_entrega USING "DD/MM/YYYY" # Busca el ultimo pago realizado LET ult_pago = NULL { 23/06/2017 NO PUEDE SER ESE NUMERO 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 aqui # VENDEDOR LET nombres = null LET apellidos = null SELECT a.nom1_emp,a.apell1_emp INTO nombres,apellidos FROM adtb00003 a WHERE a.num_emp = prtb08.sec_vend IF prtb08.nombre_file IS NULL THEN SELECT a.nombre_file INTO prtb08.nombre_file FROM prtb00012 a WHERE a.num_oc = xnumero 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, "CLIENTE : ",pvetb50.nombre_cliente CLIPPED PRINT COLUMN 001, "CODIGO CLIENTE : ",prtb08.tipo_cliente USING "&&","-", prtb08.sec_cliente USING "&&&&&&&&" PRINT COLUMN 001, "Direccion : ",prtb08.direccion CLIPPED, COLUMN 062, "Ubicacion : ",prtb08.ubicacion CLIPPED PRINT COLUMN 001,"NUM RNC : ",xnumrnc PRINT COLUMN 1, "Proyecto : ",pvetb50.nombre_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. : ", jcotizacion_no USING "&&&&&&", 2 SPACES, "Documento Referencia : ",prtb08.nombre_file CLIPPED FOR i = 1 TO 120 LET raya[i] = "-" END FOR FOR i = 1 TO 35 LET rayita[i] = "-" END FOR # PRINT "Nombre Archivo dibujo: ",parchivo LET subtotal = 0 LET descuento = 0 LET total_p = 0 LET total_gral = 0 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 LET descuento = (z.precio * z.cantidad) * (z.porc_desc/100) LET subtotal = subtotal + (z.precio*z.cantidad) LET total_p = subtotal - descuento LET total_gral = total_p + total_gral 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 57, z.unidad_med clipped, COLUMN 63, z.cantidad_1 USING "##,###.####", COLUMN 75, z.cantidad USING "#,###,###.#&&&" # COLUMN 90, z.precio USING "$,$$$,$##.##", # COLUMN 103, z.porc_desc USING "###.##","%", # COLUMN 111, total_p USING "$$,$$$,$##.##" # BUSCA DESPIECE DECLARE busca_d1 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.etiqueta = b.codid AND a.area = z.area AND #a.secuencia = z.fila AND a.cod_n = z.cod_n AND a.cod_grupo = z.cod_grupo AND a.cod_tipo = z.cod_tipo AND a.cod_sec = z.cod_sec AND a.num_oc = xnumero LET total_unidades = 0 FOREACH busca_d1 INTO etiqueta,plado1,plado2,plado3,pcantidad,pmedida PRINT COLUMN 5,pcantidad USING "<,<<<"," ",etiqueta clipped," DE ",plado1 USING "<<.#####"," X ", plado2 USING "<<.#####"," X ",plado3 USING "<<.#####"," = ",pmedida USING "<<<.#####" LET total_unidades = total_unidades + pcantidad END FOREACH IF total_unidades > 0 THEN PRINT COLUMN 19, "TOTAL UNIDADES ",total_unidades USING "<,<<<" END IF {# BUSCA COMPOSICION KIT DECLARE busca_kit CURSOR FOR SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.cantidad,b.descrip_esp FROM prtb00030 a,iptb00002 b WHERE a.num_oc = xnumero AND a.id_kit = xkit AND a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_sec LET l = 1 FOREACH busca_kit INTO kit.cod_n,kit.cod_grupo,kit.cod_tipo,kit.cod_sec,kit.cantidad,descrip_p PRINT COLUMN 5, kit.cantidad USING "<<<"," ",kit.cod_n USING "&&&&","-", kit.cod_grupo USING "&&&&","-", kit.cod_tipo USING "&&&&","-", kit.cod_sec USING "&&&&"," ",descrip_p LET l = l + 1 END FOREACH aqui ON LAST ROW 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, prtb08.sub_total + total_inst USING "#,###,###.#&" #PRINT COLUMN 060, "Itbis", # COLUMN 088, prtb08.itbis USING "#,###,###.#&" #PRINT COLUMN 060, "Total Ventas", # COLUMN 088, total_gral USING "$$$,$$$,$##.##" PRINT normal SKIP 2 LINES PRINT COLUMN 003, y.observacion wordwrap right margin 50 PAGE TRAILER PRINT COLUMN 10, "-------------------", COLUMN 35, "-------------------", COLUMN 57, "-------------------" PRINT COLUMN 13, "VENDEDOR", COLUMN 39, "CLIENTE", COLUMN 61, "APROBADO POR" END REPORT} REPORT o_pedido1(xnumero,z,y,jcotizacion_no,xkit) 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, cantidad_1 DEC(12,4), cantidad DEC(12,4), precio DEC(12,2), porc_desc DEC(8,2) END RECORD, y RECORD LIKE prtb00014.*, l smallint, jcotizacion_no,xkit INT, i,xnumero INTEGER, normal,comp_on,comp_off,doce,negrillas_on,negrillas_off, doble_on,doble_off CHAR(2),raya CHAR(120),rayita CHAR(35), total_gral,total_inst,subtotal,descuento,total_p DEC(12,2), ult_pago INTEGER, plado1,plado2,plado3,pcantidad,pmedida,total_unidades DEC(12,5), etiqueta,prnc,ptelefono,xnumrnc CHAR(20), descrip_p,nombres,apellidos CHAR(50), descrip_area CHAR(40) ORDER BY z.area,z.cod_n,z.cod_grupo,z.cod_tipo,z.cod_sec FORMAT FIRST PAGE HEADER SELECT a.* INTO p_compania.* FROM companias a LET ult_pago = NULL # VENDEDOR LET nombres = null LET apellidos = null SELECT a.nom1_emp,a.apell1_emp INTO nombres,apellidos FROM adtb00003 a WHERE a.num_emp = prtb08.sec_vend IF prtb08.nombre_file IS NULL THEN SELECT a.nombre_file INTO prtb08.nombre_file FROM prtb00012 a WHERE a.num_oc = xnumero 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 "Nombre Archivo dibujo: ",parchivo LET subtotal = 0 LET descuento = 0 LET total_p = 0 LET total_gral = 0 BEFORE GROUP OF z.area SELECT a.nombre_Area INTO descrip_Area FROM prtb00016 a WHERE a.area_num = z.area ON EVERY ROW LET descuento = (z.precio * z.cantidad) * (z.porc_desc/100) LET subtotal = subtotal + (z.precio*z.cantidad) LET total_p = subtotal - descuento LET total_gral = total_p + total_gral # BUSCA DESPIECE DECLARE busca_d1 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.etiqueta = b.codid AND a.area = z.area AND #a.secuencia = z.fila AND a.cod_n = z.cod_n AND a.cod_grupo = z.cod_grupo AND a.cod_tipo = z.cod_tipo AND a.cod_sec = z.cod_sec AND a.num_oc = xnumero LET total_unidades = 0 FOREACH busca_d1 INTO etiqueta,plado1,plado2,plado3,pcantidad,pmedida { PRINT COLUMN 5,pcantidad USING "<,<<<"," ",etiqueta clipped," DE ",plado1 USING "<<.#####"," X ", plado2 USING "<<.#####"," X ",plado3 USING "<<.#####"," = ",pmedida USING "<<<.#####" LET total_unidades = total_unidades + pcantidad} PRINTX etiqueta,plado1,plado2,plado3,pcantidad,pmedida END FOREACH PRINTX z.*,p_compania.*,xnumero,prtb08.*,pvetb50.*,xnumrnc, nombres,apellidos,jcotizacion_no,total_p,descrip_p,y.* ON LAST ROW LET total_inst = (prtb08.cantidad_i * prtb08.precio_i) + (prtb08.cantidad_mo * prtb08.precio_mo) END REPORT 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 = pvetb50.cotizacion_no #END IF INPUT BY NAME p_prtb14.observacion WITHOUT DEFAULTS AFTER INPUT INSERT INTO prtb00014 (num_oc,observacion,us_crea,fech_crea) VALUES (ult_numero,p_prtb14.observacion,SUSER_SNAME(),GETDATE()) EXIT INPUT END INPUT CLOSE WINDOW wobserva END FUNCTION FUNCTION verificacodigo(qcodn,qcodgrupo,qcodtipo,qcodsec,qcotizacion) DEFINE qcodn,qcodgrupo,qcodtipo,qcodsec SMALLINT, qcotizacion INT, estado BOOLEAN LET estado = FALSE SELECT DISTINCT a.cod_n FROM iptb00027 a WHERE a.cod_n = qcodn AND a.cod_grupo = qcodgrupo AND a.cod_tipo = qcodtipo AND a.cod_Sec = qcodsec IF STATUS <> NOTFOUND THEN SELECT DISTINCT a.cotizacion_no FROM vetb00052 a WHERE a.cotizacion_no = qcotizacion AND a.cod_n = qcodn AND a.cod_tipo = qcodtipo AND a.cod_sec = qcodsec IF STATUS <> NOTFOUND THEN CALL fgl_winmessage("ERROR", "NO PUEDE CONVERTIR COTIZACION EN ORDEN, EXISTE UN ITEM QUE SE DESPIEZA Y NO SE ENCUENTRA EN TABLA, VERIFIQUE DESPIECE","INFO") LET estado = TRUE END IF END IF RETURN estado END FUNCTION