{ -------------------------------------------------------------------------- PROGRAMA : VEPRMT022 OBJETIVO : Este programa captura la factura comercial REALIZADO POR : Ing. Juan Fco. Soto. FECHA : Enero 12,1993. MODIFICADO POR: Victor Gomez C. FECHA : Saturday, July 07, 2001 OBJETIVO : Registrar el descuento aplicado a cada producto por separado, se utilizaran los campos cantidad_2 y bonificacion de la tabla vetb00003. -------------------------------------------------------------------------- } IMPORT os GLOBALS "veprgb000.4gl" 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 DEFINE salida STRING DEFINE pcotizacion int DEFINE estado RECORD nula CHAR(6), impresa CHAR(6) END RECORD, att dynamic array of record col1 string, col2 STRING END record DEFINE estatus,p_impresion CHAR(1) DEFINE porce,valor_desc,cant_vend,porcentaje_n DECIMAL (12,2) DEFINE codigo_provincia,t_arr,kncf,num_req,xdocumento_almacen INTEGER, xconduce_almacen INT, documento_ref CHAR(25),exito1 BOOLEAN, descripcion_bodega,filedestino VARCHAR(100), pubicacion LIKE prtb00012.ubicacion, control_cantidad, chpath CHAR(1), simbolo CHAR(6), pconduce int, purbanizacion,nombre_ad CHAR(30), pperfil smallint, accesso CHAR(2), num_rnc VARCHAR(25), direccion_sucursal VARCHAR(100) DEFINE cons_fact RECORD cod_cia LIKE vetb00002.cod_cia, ventas LIKE vetb00002.ventas , zona LIKE vetb00002.zona , nombre_tipo CHAR(11), factura LIKE vetb00002.factura, fecha_factura LIKE vetb00002.fecha_factura, tipo_cliente LIKE vetb00002.tipo_cliente, sec_cliente LIKE vetb00002.sec_cliente, nombre CHAR(30), direccion CHAR(50), ciudad CHAR(15), prima_us LIKE vetb00002.prima_us, porc_desc LIKE vetb00002.porc_desc, nombre_desc CHAR(25), cond_pago LIKE vetb00002.cond_pago, descrip CHAR(25), orden int, fecha_orden LIKE vetb00002.fecha_orden, conduce int, fecha_conduce LIKE vetb00002.fecha_conduce, porc_itbi LIKE vetb00002.porc_itbi, cod_vend int, sec_vend int, nombre_vend CHAR(29), cod_transp LIKE iptb00006.cod_transp, sec_transp LIKE iptb00006.sec_transp, cod_tarifa LIKE iptb00006.cod_tarifa, nombre_tran LIKE vetb00015.nombre, fecha_embarque LIKE vetb00002.fecha_embarque, placa_transp LIKE iptb00006.placa, sub_total LIKE vetb00002.sub_total, desc_valor LIKE vetb00002.monto_desc, itbi LIKE vetb00002.monto_itbi, total_fact LIKE vetb00002.neto END RECORD, cantidad_req,balance_req DEC(12,4) DEFINE lleva_parcial,ch_itbi CHAR(1), fecha_cotizacion,fecha_vencimiento DATE, cuenta_arr INTEGER, observacion CHAR(180) , obs1,obs2,obs3 CHAR(50),obs4 CHAR(30), xnombre_provincia VARCHAR(100) MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CALL ARG_VAL(5) RETURNING impresor CALL STARTLOG("veprmt22.txt") #CONNECT TO "smarmotech" AS "MSSQL_C" USER usuarios USING clave CONNECT to "smarmotech" AS "MSSQL_E" USER usuarios USING clave SELECT a.sucid,b.sucnombre,b.direccion,c.nombre_provincia,b.telefono,b.fax,b.rnc,a.cod_perfil INTO localidad,sucnombre,direccion_sucursal,xnombre_provincia, p_companias.telefono,p_companias.fax,p_companias.rnc,pperfil FROM seg0001 a,sucursales b,vetb00020 c WHERE a.usuario = usuarios AND a.sucid = b.sucid AND b.localidad = c.cod_provincia IF localidad IS NULL THEN CALL fgl_winmessage("ERROR","USUARIO NO TIENE LOCALIDAD","INFO") EXIT PROGRAM END IF # LET p_companias.nombre= sucnombre OPTIONS FORM LINE 2, ERROR LINE 24, COMMENT LINE 23, PROMPT LINE 22 CLEAR SCREEN call ui.Interface.loadStyles("formularios") OPEN FORM vefmmt022 FROM "vefmmt022" DISPLAY FORM vefmmt022 SELECT a.nombre INTO p_companias.nombre FROM companias a SELECT a.sucid,b.sucnombre,b.direccion,c.nombre_provincia,b.telefono,b.fax,b.rnc INTO localidad,sucnombre,direccion_sucursal,xnombre_provincia, p_companias.telefono,p_companias.fax,p_companias.rnc FROM seg0001 a,sucursales b,vetb00020 c WHERE a.usuario = usuarios AND a.sucid = b.sucid AND b.localidad = c.cod_provincia DISPLAY p_companias.nombre TO compania DISPLAY BY NAME sucnombre DISPLAY "E:\\MARMOTECH\\BIN320\\IMAGENES\\LOGO_DCM.PNG" TO logo_cia MENU ON ACTION nuevo LET num_req = NULL IF localidad IS NULL THEN CALL fgl_winmessage("ERROR","USUARIO NO TIENE LOCALIDAD","INFO") EXIT PROGRAM END IF # LET p_companias.nombre= sucnombre CALL fact_det.clear() CALL veprmt022() CALL fact_det.clear() ON ACTION buscar call veprmf001() { ON ACTION facturadas CALL busca_facturas()} ON ACTION salir exit menu END MENU END MAIN FUNCTION veprmt022() DEFINE t_valor DECIMAL(12,2) DEFINE tipo_fact,p_cod,p_bonif, cod_fact SMALLINT, credito DEC(12,2) DEFINE hoy DATE DEFINE hice,primera,opt1,opt CHAR(1) DEFINE tipo_f CHAR(2) DEFINE tipo1 SMALLINT DEFINE tot_porc1,porc_desc,tot_porc DECIMAL(8,3) LET hoy = today DISPLAY hoy using "dd/mm/yyyy" AT 1,68 ATTRIBUTE (blue) LET fact_gral.fecha_factura = today LABEL exito: INITIALIZE salida,fact_gral.*,primera,documento_ref TO NULL LET porc_desc = 0 LET descrip1 = NULL LET descrip2 = NULL LET p_bonif = NULL LET fact_gral.cod_cia = 1 LET tot_porc1 = 0 LET fact_gral.itbi = 0 LET fact_gral.sub_total = 0 LET fact_gral.total_fact = 0 LET fact_gral.desc_valor = 0 LET tot_porc = 0 DISPLAY BY NAME descrip1 CALL fact_det.clear() LABEL vuelve: LET descrip1 = NULL LET descrip2 = NULL LET descrip3 = NULL LET p_bonif = NULL LET tot_porc1 = 0 LET t_valor = 0 LET xdocumento_almacen=NULL LET xconduce_almacen = NULL LET fact_gral.cond_pago = 2 LET fact_gral.porc_itbi = NULL LET fact_gral.prima_us = 1 DISPLAY BY NAME fact_gral.porc_itbi,fact_gral.prima_us,descrip1 LET hice = "S" LET h = 1 LABEL otravez: INITIALIZE detalle TO NULL LET ch_itbi = "S" LABEL regresa: LET fact_gral.itbi = 0 LET fact_gral.sub_total = 0 LET fact_gral.total_fact = 0 LET fact_gral.desc_valor = 0 INPUT BY NAME pconduce,num_req,codigodgii,fact_gral.*,documento_ref,ch_itbi,observacion WITHOUT DEFAULTS ATTRIBUTE (blue) AFTER FIELD ch_itbi IF ch_itbi = 'N' THEN LET fact_gral.porc_itbi =0 END IF DISPLAY BY NAME fact_gral.porc_itbi AFTER FIELD codigodgii IF codigodgii IS NOT NULL THEN SELECT UNIQUE a.itbis INTO ch_itbi FROM vetb00071 a WHERE a.tipo_doc = "FT" and a.codigo_dgii = codigodgii AND a.sucid = localidad AND disponible = "S" IF STATUS = NOTFOUND THEN LET numero_msg =391 CALL msg(numero_msg) CONTINUE INPUT END IF END IF IF ch_itbi = 'N' THEN LET fact_gral.porc_itbi=0 END IF DISPLAY BY NAME fact_gral.porc_itbi,ch_itbi BEFORE INPUT INITIALIZE detalle TO NULL LET descripcion_bodega = NULL CLEAR FORM SELECT a.nombre INTO p_companias.nombre FROM companias a SELECT a.sucid,b.sucnombre,b.direccion,c.nombre_provincia,b.telefono,b.fax,b.rnc INTO localidad,sucnombre,direccion_sucursal,xnombre_provincia, p_companias.telefono,p_companias.fax,p_companias.rnc FROM seg0001 a,sucursales b,vetb00020 c WHERE a.usuario = usuarios AND a.sucid = b.sucid AND b.localidad = c.cod_provincia DISPLAY p_companias.nombre TO compania DISPLAY BY NAME sucnombre DISPLAY "E:\\MARMOTECH\\BIN320\\IMAGENES\\LOGO_DCM.PNG" TO logo_cia LET salida ="MA" LET fact_gral.conduce=NULL DISPLAY BY NAME fact_gral.conduce CALL ccondicion() ON KEY (F2) IF fact_gral.orden IS NOT NULL THEN LET codigodgii = NULL LET descripcion = NULL SET CONNECTION "MSSQL_E" CALL btipo_fact(1) RETURNING codigodgii,descripcion,fecha_vencimiento # SET CONNECTION "MSSQL_C" LET int_flag = FALSE DISPLAY BY NAME codigodgii DISPLAY descripcion TO descripcion_ncf DISPLAY BY NAME fecha_vencimiento ELSE NEXT FIELD orden END IF ON KEY (CONTROL-W) CASE WHEN INFIELD(cod_tarifa) CALL tarifas() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false NEXT FIELD cod_tarifa END IF LET descrip5 = descrip6[1,15] clipped LET descrip6 = descrip6[16,30] clipped DISPLAY BY NAME fact_gral.cod_tarifa,descrip6 ATTRIBUTE (BOLD) NEXT FIELD cod_tarifa WHEN INFIELD(zona) IF fact_gral.ventas = "1" THEN # CALL busca_zona1() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false NEXT FIELD zona END IF ELSE # CALL busca_pais() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false NEXT FIELD zona END IF END IF LET p_cod = fact_gral.zona LET fact_gral.zona = p_cod using "&&&" DISPLAY BY NAME fact_gral.zona,descrip1 ATTRIBUTE (BOLD) NEXT FIELD fecha_factura WHEN INFIELD(cond_pago) CALL condiciones() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false NEXT FIELD cond_pago END IF DISPLAY BY NAME fact_gral.cond_pago ATTRIBUTE(blue) DISPLAY BY NAME condicion.descrip ATTRIBUTE(blue) NEXT FIELD orden END CASE AFTER FIELD pconduce IF pconduce IS NOT NULL OR pconduce <> 0 THEN # SET CONNECTION "MSSQL_C" # SELECT a.tipo_cliente,a.sec_cliente,b.nombre,c.calle||' '||c.casa_num||' '||c.urbanizacion||' '||c.barrio, SELECT a.tipo_cliente,a.sec_cliente,b.nombre,c.direccion_cliente, d.cotizacion_no,a.orden,a.documento,a.conduce,c.rnc, a.bodega INTO fact_gral.tipo_cliente,fact_gral.sec_cliente,fact_gral.nombre,fact_gral.direccion, fact_gral.conduce,fact_gral.orden,documento_ref,xconduce_almacen,num_rnc,fact_gral.bodega FROM vetb00002 a,vetb00004 b, prtb00012 d,OUTER vetb00050 c WHERE a.factura = pconduce AND a.tipo_cliente = b.tipo_cliente AND a.sec_cliente = b.sec_cliente AND a.tipo_cliente = c.tipo_cliente AND a.sec_cliente = c.sec_cliente AND a.cotizacion_no = c.cotizacion_no AND a.orden = d.num_oc AND a.status_t IS NULL IF STATUS = NOTFOUND THEN CALL fgl_winmessage("ERROR","CONDUCE NO EXISTE","INFO") NEXT FIELD pconduce END IF DISPLAY BY NAME fact_gral.tipo_cliente,fact_gral.sec_cliente,fact_gral.nombre,fact_gral.direccion, fact_gral.orden,fact_gral.conduce,fact_gral.fecha_factura,documento_ref # DESCRIPCION BODEGA SELECT a.descripcion INTO descripcion_bodega FROM intb00009 a WHERE cod_bodega = fact_gral.bodega END IF AFTER FIELD orden # SET CONNECTION "MSSQL_C" SELECT a.ventas,a.cod_provincia,a.tipo_cliente,a.sec_cliente, a.cond_pago, f.descrip,CONVERT(CHAR(10),a.fecha,103),a.porc_itbi,a.sec_vend, f.dias,b.num_oc,c.nombre,c.limite_credito,c.cod_provincia,c.telefono, d.nom1_emp, d.apell1_emp,a.cotizacion_no,CONVERT(CHAR(10),b.fecha_oc,103), b.nombre_file,a.direccion_cliente,a.rnc INTO fact_gral.ventas,fact_gral.zona, fact_gral.tipo_cliente,fact_gral.sec_cliente, fact_gral.cond_pago,condicion.descrip, fecha_cotizacion,fact_gral.porc_itbi, fact_gral.sec_vend,condicion.dias,fact_gral.orden, fact_gral.nombre,credito,codigo_provincia, cliente_bas.telefono, descrip5,descrip6,fact_gral.conduce,fact_gral.fecha_orden, documento_ref,fact_gral.direccion,num_rnc FROM vetb00012 f,vetb00050 a,prtb00012 b,vetb00004 c,adtb00003 d WHERE b.num_oc = fact_gral.orden AND a.cotizacion_no = b.cotizacion_no AND b.tipo_cliente = c.tipo_cliente AND b.sec_cliente = c.sec_cliente AND a.sec_vend = d.num_emp AND b.status_t IS NULL AND a.cond_pago = f.cond_pago IF status = notfound then CALL msg(3) NEXT FIELD orden end IF LET fact_gral.nombre_vend = descrip5 clipped," ",descrip6 CLIPPED SELECT a.sec_vend FROM vetb00084 a WHERE a.sec_vend = fact_gral.sec_vend IF STATUS = NOTFOUND THEN CALL fgl_winmessage("ERROR","VENDEDOR NO EXISTE EN LA TABLA VETB00084, FAVOR DE NOTIFICAR A INFORMATICA","INFO") NEXT FIELD conduce END IF LET purbanizacion = NULL { COLOQUE LA DIRECCION DEL CLIENTE, YA QUE VOY A UTILIZAR LA DIRECCION DE FACTURACION QUE ADICIONE EN LA TABLA VETB00050 FECHA ACTUALIZACION 21/05/2018 SELECT b.calle,b.casa_num,b.urbanizacion,b.barrio INTO descrip1,descrip2,purbanizacion,descrip3 FROM vetb00005 b WHERE b.tipo_cliente = fact_gral.tipo_cliente AND b.sec_cliente = fact_gral.sec_cliente } SELECT d.nombre_provincia INTO fact_gral.ciudad FROM vetb00020 d WHERE d.cod_provincia = codigo_provincia # LET fact_gral.direccion = descrip1 clipped,descrip2 clipped,", ", # descrip3 clipped,purbanizacion DISPLAY BY NAME fact_gral.*,fecha_cotizacion,documento_ref AFTER FIELD conduce IF fact_gral.conduce IS not NULL THEN # informacion de la cotizacion SELECT a.ventas,a.cod_provincia,a.tipo_cliente,a.sec_cliente, a.cond_pago, f.descrip,CONVERT(CHAR(10),a.fecha,103),a.porc_itbi,a.sec_vend, f.dias,b.num_oc,b.nombre_file,a.direccion_facturacion,a.rnc INTO fact_gral.ventas,fact_gral.zona, fact_gral.tipo_cliente,fact_gral.sec_cliente, fact_gral.cond_pago,condicion.descrip, fecha_cotizacion,fact_gral.porc_itbi, fact_gral.sec_vend,condicion.dias,fact_gral.orden, documento_ref,fact_gral.direccion,num_rnc FROM vetb00012 f,vetb00050 a,prtb00012 b WHERE a.cotizacion_no = fact_gral.conduce AND a.cotizacion_no = b.cotizacion_no AND b.status_t IS NULL AND f.status_t IS NULL AND a.cond_pago = f.cond_pago IF status = notfound then CALL msg(3) NEXT FIELD conduce end IF DISPLAY BY NAME fact_gral.cond_pago LET tipo1 = fact_gral.zona SELECT unique descrip INTO descrip1 FROM vetb00008 WHERE cod_zona = tipo1 let fact_gral.zona = tipo1 using "&&&" SELECT a.nombre,a.limite_credito,a.cod_provincia,a.telefono INTO fact_gral.nombre,credito,codigo_provincia, cliente_bas.telefono FROM vetb00004 a WHERE a.tipo_cliente = fact_gral.tipo_cliente AND a.sec_cliente = fact_gral.sec_cliente AND a.status_t IS NULL LET nombre_ad = NULL SELECT a.solicitante_s INTO nombre_ad FROM vetb00006 a WHERE a.tipo_cliente_s = fact_gral.tipo_cliente AND a.sec_cliente_s = fact_gral.sec_cliente SELECT nom1_emp, apell1_emp INTO descrip5,descrip6 FROM adtb00003 WHERE num_emp = fact_gral.sec_vend SELECT a.sec_vend FROM vetb00084 a WHERE a.sec_vend = fact_gral.sec_vend IF STATUS = NOTFOUND THEN CALL fgl_winmessage("ERROR","VENDEDOR NO EXISTE EN LA TABLA VETB00084, FAVOR DE NOTIFICAR A INFORMATICA","INFO") NEXT FIELD conduce END IF LET fact_gral.nombre_vend = descrip5 clipped," ",descrip6 CLIPPED DISPLAY BY NAME fact_gral.nombre_vend,documento_ref LET fact_gral.nombre = fact_gral.nombre CLIPPED," ",nombre_ad DISPLAY BY NAME fact_gral.nombre ATTRIBUTE (blue) LET descrip1 = NULL LET descrip3 = NULL SELECT prima INTO fact_gral.prima_us FROM vetb00019 WHERE disponible = "S" AND status_t IS NULL LET purbanizacion = NULL { SELECT b.calle,b.casa_num,b.urbanizacion,b.barrio INTO descrip1,descrip2,purbanizacion,descrip3 FROM vetb00005 b WHERE b.tipo_cliente = fact_gral.tipo_cliente AND b.sec_cliente = fact_gral.sec_cliente } SELECT d.nombre_provincia INTO fact_gral.ciudad FROM vetb00020 d WHERE d.cod_provincia = codigo_provincia # LET fact_gral.direccion = descrip1 clipped,descrip2 clipped,", ", # descrip3 clipped,purbanizacion DISPLAY BY NAME fact_gral.direccion ATTRIBUTE (blue) DISPLAY BY NAME fact_gral.ciudad ATTRIBUTE (blue) DISPLAY BY NAME fact_gral.prima_us LET porcentaje_n = 0 SELECT a.porc_negocio INTO porcentaje_n FROM vetb00086 a WHERE a.cotizacion_no = fact_gral.conduce IF STATUS = NOTFOUND THEN LET porcentaje_n = 0 END IF LET pubicacion = NULL SELECT UNIQUE CONVERT(CHAR(10),a.fecha_oc,103),a.ubicacion,a.num_oc,nombre_file INTO fact_gral.fecha_orden,pubicacion,fact_gral.orden,documento_ref FROM prtb00012 a WHERE a.num_oc = fact_gral.orden AND a.tipo_cliente = fact_gral.tipo_cliente AND a.sec_cliente = fact_gral.sec_cliente AND a.status_t IS NULL display by name fact_gral.*,porcentaje_n,fecha_cotizacion end IF { ESTA EN COMENTARIO PORQUE NO SE ESTA UTILIZANDO 9/12/2015 AFTER FIELD num_req IF num_req IS NOT NULL THEN SELECT a.num_req FROM cctb00025 a WHERE a.num_rea = num_req AND a.estado = 'AUTORIZADA' AND a.status_t IS NULL IF STATUS = NOTFOUND THEN CALL fgl_winmessage("ERROR","REQUISICION NO EXISTE O NO ESTA AUTORIZADA","INFO") NEXT FIELD num_req END IF END IF } AFTER FIELD ventas IF fact_gral.ventas IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD ventas END IF SELECT prima INTO fact_gral.prima_us FROM vetb00019 WHERE disponible = "S" AND status_t IS null IF fact_gral.ventas = "1" THEN LET p_codigo = 30 LET tipo_f = "FT" LET tipo_fact = 30 LET fact_gral.prima_us = 1 ELSE IF fact_gral.ventas = "2" THEN LET tipo_fact = 31 LET p_codigo = 31 LET tipo_f = "FE" END IF IF fact_gral.ventas = "3" THEN LET tipo_fact = 55 LET p_codigo = 55 LET tipo_f = "FE" END IF IF fact_gral.ventas = "4" THEN SELECT porciento INTO fact_gral.prima_us FROM vetb00019 WHERE disponible = "S" AND status_t IS null LET tipo_fact = 56 LET p_codigo = 56 LET tipo_f = "FE" END IF END IF IF ch_itbi = "S" THEN SELECT prima,@itbi,porciento INTO fact_gral.prima_us,fact_gral.porc_itbi,porce FROM vetb00019 WHERE disponible = "S" AND status_t IS null IF fact_gral.ventas = "1" THEN IF fact_gral.porc_itbi IS NULL THEN LET fact_gral.porc_itbi = 0 END IF LET fact_gral.prima_us = 1 ELSE IF fact_gral.ventas = "2" THEN LET fact_gral.porc_itbi = NULL IF fact_gral.prima_us IS NULL THEN SELECT prima INTO fact_gral.prima_us FROM vetb00019 WHERE disponible = "S" AND status_t IS null END IF END IF IF fact_gral.ventas = "4" THEN LET fact_gral.porc_itbi = NULL IF fact_gral.prima_us IS NULL THEN SELECT porciento INTO fact_gral.prima_us FROM vetb00019 WHERE disponible = "S" END IF LET simbolo = "EURO$" END IF END IF END IF if ch_itbi = 'N' then let fact_gral.porc_itbi=0 end if DISPLAY BY NAME fact_gral.porc_desc,fact_gral.prima_us, fact_gral.porc_itbi DISPLAY BY NAME fact_gral.ventas DISPLAY BY NAME descrip1 AFTER FIELD porc_desc IF fact_gral.porc_desc < 0 THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD zona END IF AFTER FIELD cond_pago IF fact_gral.cond_pago IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cond_pago END IF BEFORE FIELD porc_itbi IF fact_gral.ventas = "2" THEN NEXT FIELD sec_vend END IF AFTER FIELD sec_vend IF fact_gral.sec_vend IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD sec_vend END IF IF fact_gral.cond_pago != 1 OR fact_gral.sec_vend !=8888 THEN SELECT nom1_emp, apell1_emp INTO descrip5,descrip6 FROM adtb00003 WHERE num_emp = fact_gral.sec_vend IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD sec_vend END IF LET fact_gral.nombre_vend = descrip5 clipped," ",descrip6 clipped DISPLAY BY NAME fact_gral.nombre_vend ATTRIBUTE (blue) END IF BEFORE FIELD cod_transp LET fact_gral.nombre_tran = NULL LET p_cedula = NULL LET p_serie = NULL IF fact_gral.cond_pago = 1 or fact_gral.ventas = "2" THEN NEXT FIELD fecha_embarque END IF AFTER FIELD cod_transp IF fact_gral.cod_transp IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) # NEXT FIELD cod_transp END IF AFTER FIELD sec_transp IF fact_gral.sec_transp IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) #NEXT FIELD sec_transp ELSE LET fact_gral.nombre_tran = NULL LET p_cedula = NULL LET p_serie = NULL SELECT a.nombre,a.cedula,a.serie INTO fact_gral.nombre_tran,p_cedula,p_serie FROM vetb00015 a WHERE a.cod_transp = fact_gral.cod_transp AND a.sec_transp = fact_gral.sec_transp AND a.status_t IS NULL IF STATUS < 0 THEN CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF ELSE IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_transp END IF END IF DISPLAY BY NAME fact_gral.nombre_tran ATTRIBUTE (blue) END IF AFTER FIELD cod_tarifa IF fact_gral.cod_tarifa IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) #NEXT FIELD cod_tarifa ELSE LET descrip6 = NULL SELECT descrip INTO descrip6 FROM vetb00023 WHERE cod_tarifa = fact_gral.cod_tarifa AND status_t IS NULL IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_tarifa END IF LET descrip5 = descrip6[1,15] clipped LET descrip6 = descrip6[16,30] clipped DISPLAY BY NAME descrip5,descrip6 ATTRIBUTE (BOLD) END IF BEFORE FIELD fecha_factura LET fact_gral.fecha_factura = hoy DISPLAY BY NAME fact_gral.fecha_factura AFTER FIELD fecha_factura CALL prd(fact_gral.fecha_factura,usuarios) RETURNING bandera IF bandera = 1 THEN NEXT FIELD fecha_factura END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false DELETE FROM vetb00042 WHERE factura = fact_gral.factura AND cod_mov = p_codigo RETURN END IF IF fact_gral.fecha_factura IS NULL THEN LET fact_gral.fecha_factura = TODAY DISPLAY BY NAME fact_gral.fecha_factura END IF # Control orden de pedidos SELECT UNIQUE CONVERT(CHAR(10),a.fecha_oc,103),a.ubicacion,a.num_oc,a.cotizacion_no INTO fact_gral.fecha_orden,pubicacion,fact_gral.orden,fact_gral.conduce FROM prtb00012 a WHERE a.num_oc = fact_gral.orden AND a.tipo_cliente = fact_gral.tipo_cliente AND a.sec_cliente = fact_gral.sec_cliente AND a.status_t IS NULL IF STATUS = NOTFOUND THEN CALL fgl_winmessage("INFO","ORDEN PEDIDOS NO EXISTE","INFO") NEXT FIELD orden END IF DISPLAY BY NAME fact_gral.fecha_orden,fact_gral.orden,fact_gral.conduce LET p_fechas = fact_gral.fecha_factura LET hoy = fact_gral.fecha_factura CALL prd(p_fechas,usuarios) RETURNING bandera IF bandera = 1 THEN LET bandera = 0 #NEXT FIELD fecha_factura END IF IF fact_gral.ventas IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD ventas END IF IF ch_itbi = "S" THEN SELECT prima,@itbi,porciento INTO fact_gral.prima_us,fact_gral.porc_itbi,porce FROM vetb00019 WHERE disponible = "S" AND status_t IS null DISPLAY " 1 itbis ",fact_gral.porc_itbi IF fact_gral.ventas = "1" THEN IF fact_gral.porc_itbi IS NULL THEN LET fact_gral.porc_itbi = 0 END IF LET tipo_fact = 30 LET tipo_f = "FT" LET fact_gral.prima_us = 1 ELSE IF fact_gral.ventas = "3" THEN ELSE DISPLAY " 3 itbis ",fact_gral.porc_itbi," ventas ",fact_gral.ventas LET fact_gral.porc_itbi = NULL IF fact_gral.prima_us IS NULL THEN LET fact_gral.prima_us = 1 END IF LET tipo_fact = 31 LET tipo_f = "FE" END IF END IF END IF IF fact_gral.prima_us IS NULL THEN LET numero_msg = 87 CALL msg(numero_msg) NEXT FIELD tipo_cliente END IF DISPLAY BY NAME fact_gral.prima_us,fact_gral.porc_itbi DISPLAY BY NAME fact_gral.ventas DISPLAY BY NAME descrip1 IF fact_gral.sec_cliente IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD tipo_cliente END IF # SET CONNECTION "MSSQL_C" SELECT a.paga_itbis INTO control_cantidad FROM vetb00060 a WHERE a.tipo_cliente = fact_gral.tipo_cliente # FORZANDO EL CONTROL DE LA CANTIDAD LET control_cantidad = 'S' # Control Conduce SET CONNECTION "MSSQL_E" SELECT a.factura_c FROM vetb00002 a WHERE a.factura_c = pconduce AND a.status_t IS NULL IF STATUS <> NOTFOUND THEN CALL fgl_winmessage("ERROR","CONDUCE YA TIENE FACTURA","INFO") NEXT FIELD pconduce END IF SELECT DISTINCT a.orden FROM vetb00002 a WHERE a.orden = fact_gral.orden AND a.sucid <> localidad AND a.status_t IS NULL IF STATUS <> NOTFOUND THEN CALL fgl_winmessage("INFO","ORDEN HA SIDO FACTURADA POR UNA LOCALIDAD","INFO") NEXT FIELD orden END IF SELECT a.tipo_cliente FROM vetb00004 a WHERE a.tipo_cliente = fact_gral.tipo_cliente AND a.sec_cliente = fact_gral.sec_cliente IF STATUS = NOTFOUND THEN CALL fgl_winmessage("ERROR","CLIENTE NO EXISTE EN BASE DE DATOS, CONSULTE ADMINISTRADOR","INFO") NEXT FIELD tipo_cliente END IF EXIT INPUT END INPUT #CALL detalles() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET fact_gral.itbi = 0 LET fact_gral.sub_total = 0 LET fact_gral.total_fact = 0 LET fact_gral.desc_valor = 0 LET tot_porc = 0 # SET CONNECTION "MSSQL_C" LABEL alla: IF num_req IS NULL THEN IF pconduce IS NULL AND fact_gral.orden IS NOT NULL THEN DECLARE buscame CURSOR FOR SELECT unique a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.descrip_esp,b.unidad_med, a.cantidad,d.precio,d.porc_desc,d.id_kit FROM prtb00013 a,iptb00002 b,prtb00012 c,vetb00051 d WHERE c.cotizacion_no = fact_gral.conduce AND a.num_oc = fact_gral.orden AND a.num_oc = c.num_oc AND c.cotizacion_no = d.cotizacion_no AND a.area = d.area 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 = d.cod_n AND a.cod_grupo = d.cod_grupo AND a.cod_tipo = d.cod_tipo AND a.cod_Sec = d.cod_sec UNION SELECT unique a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.descrip_esp,b.unidad_med, a.cantidad,d.precio,d.porc_desc,d.id_kit FROM prtb00013 a,iptb00002 b,prtb00012 c,vetb00031 d WHERE c.cotizacion_no = fact_gral.conduce AND a.num_oc = fact_gral.orden AND a.num_oc = c.num_oc AND c.cotizacion_no = d.cotizacion_no AND a.area = d.area 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 = d.cod_n AND a.cod_grupo = d.cod_grupo AND a.cod_tipo = d.cod_tipo AND a.cod_Sec = d.cod_sec LET idx = 1 FOREACH buscame INTO fact_det[idx].area, fact_det[idx].cod_n, fact_det[idx].cod_grupo, fact_det[idx].cod_tipo, fact_det[idx].cod_sec, fact_det[idx].descrip_esp, fact_det[idx].unidad_med, fact_det[idx].cantidad, fact_det[idx].precio, fact_det[idx].cantidad_2, fact_det[idx].kit_id IF porcentaje_n > 0 THEN LET fact_det[idx].precio = fact_det[idx].precio *(porcentaje_n /100) END IF LET idx = idx + 1 END FOREACH END IF IF pconduce IS NOT NULL THEN DECLARE busca_factura CURSOR FOR SELECT a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.descrip_esp,b.unidad_med, a.cantidad,a.precio,a.cantidad_2,a.id_kit FROM vetb00003 a,iptb00002 b WHERE a.factura = pconduce 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 idx = 1 FOREACH busca_factura INTO fact_det[idx].area, fact_det[idx].cod_n, fact_det[idx].cod_grupo, fact_det[idx].cod_tipo, fact_det[idx].cod_sec, fact_det[idx].descrip_esp, fact_det[idx].unidad_med, fact_det[idx].cantidad, fact_det[idx].precio, fact_det[idx].cantidad_2 IF porcentaje_n > 0 THEN LET fact_det[idx].precio = fact_det[idx].precio *(porcentaje_n /100) END IF LET idx = idx + 1 END FOREACH END IF ELSE DECLARE busca_req CURSOR FOR SELECT a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.descrip_esp,b.unidad_med, SUM(a.cantidad),a.precio,SUM(a.cantidad) FROM cctb00026 a,iptb00002 b WHERE a.num_req = num_req 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 GROUP BY a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.descrip_esp,b.unidad_med, a.precio LET idx = 1 FOREACH busca_req INTO fact_det[idx].area, fact_det[idx].cod_n, fact_det[idx].cod_grupo, fact_det[idx].cod_tipo, fact_det[idx].cod_sec, fact_det[idx].descrip_esp, fact_det[idx].unidad_med, fact_det[idx].cantidad, fact_det[idx].precio, fact_det[idx].cantidad_2 LET cantidad_req = 0 LET balance_req = 0 SELECT SUM(a.cantidad) INTO cantidad_req FROM vetb00092 a WHERE a.num_req = num_req AND a.area = fact_det[idx].area AND a.cod_n = fact_det[idx].cod_n AND a.cod_grupo = fact_det[idx].cod_grupo AND a.cod_tipo = fact_det[idx].cod_tipo AND a.cod_sec = fact_det[idx].cod_sec AND a.status_t IS NULL LET balance_req = fact_det[idx].cantidad_2 - cantidad_req IF balance_req <=0 THEN CONTINUE FOREACH END IF LET idx = idx + 1 END FOREACH IF idx = 1 THEN CALL fgl_winmessage("ERROR","REQUISICION NO TIENE PENDIENTES POR FACTURAR, FAVOR REVISAR","INFO") GOTO regresa END IF END IF SET CONNECTION "MSSQL_E" # IMPORTACION DATOS { LET filedestino = NULL SELECT DISTINCT a.num_oc FROM prtb00013 a WHERE a.num_oc = fact_gral.orden IF STATUS = NOTFOUND THEN # EXPORTAR DATA DESDE EL C SET CONNECTION "MSSQL_C" CALL os.Path.separator() RETURNING chpath LET filedestino = "C:\\USERS\\SISTEMA\\MARMOTECH\\\IMPORT" LET filedestino = filedestino CLIPPED,chpath,fact_gral.orden USING "&&&&&&" CALL os.Path.mkdir(filedestino CLIPPED) RETURNING exito1 LET filedestino = filedestino CLIPPED,chpath,fact_gral.orden USING "&&&&&&","-01.txt" UNLOAD TO filedestino SELECT a.ventas,a.cotizacion_no,a.num_oc, a.tipo_cliente,a.sec_cliente,a.nombre_file,a.sec_Vend,a.direccion,a.telefono, a.cond_pago,a.itbis,a.ubicacion,a.cerrada, a.observacion,a.nombre_file2,a.us_crea FROM prtb00012 a WHERE a.num_oc = fact_gral.orden AND a.status_t IS NULL LET filedestino = "C:\\USERS\\SISTEMA\\MARMOTECH\\\IMPORT" LET filedestino = filedestino CLIPPED,chpath,fact_gral.orden USING "&&&&&&", chpath,fact_gral.orden USING "&&&&&&","-02.txt" UNLOAD TO filedestino SELECT num_oc,secuencia,area,cod_n,cod_grupo,cod_tipo,cod_Sec,cantidad,precio,id_kit FROM prtb00013 WHERE num_oc = fact_gral.orden # ADICIONA DATA DESDE EN EL E SET CONNECTION "MSSQL_E" DELETE FROM prtb00012 WHERE num_oc = fact_gral.orden DELETE FROM prtb00013 WHERE num_oc = fact_gral.orden LET filedestino = "C:\\USERS\\SISTEMA\\MARMOTECH\\\IMPORT" LET filedestino = filedestino CLIPPED,chpath,fact_gral.orden USING "&&&&&&", chpath,fact_gral.orden USING "&&&&&&","-01.txt" LOAD FROM filedestino INSERT INTO prtb00012 (ventas,cotizacion_no,num_oc, tipo_cliente,sec_cliente,nombre_file,sec_Vend,direccion,telefono, cond_pago,itbis,ubicacion,cerrada, observacion,nombre_file2,us_crea) LET filedestino = "C:\\USERS\\SISTEMA\\MARMOTECH\\\IMPORT" LET filedestino = filedestino CLIPPED,chpath,fact_gral.orden USING "&&&&&&", chpath,fact_gral.orden USING "&&&&&&","-02.txt" LOAD FROM filedestino INSERT INTO prtb00013 (num_oc,secuencia,area,cod_n,cod_grupo,cod_tipo,cod_Sec,cantidad,precio,id_kit) END IF} SET CONNECTION "MSSQL_E" CALL set_count(idx-1) INPUT ARRAY fact_det WITHOUT DEFAULTS FROM s_fact.* BEFORE INPUT { IF pconduce IS NULL THEN call dialog.setCellAttributes(att) IF control_cantidad = "S" THEN FOR idx = 1 TO fact_det.getLength() CALL control_cotizacion(fact_det[idx].area,fact_det[idx].cod_n,fact_det[idx].cod_grupo, fact_det[idx].cod_tipo,fact_det[idx].cod_sec, fact_det[idx].cantidad,fact_gral.orden) RETURNING xverdad, fact_det[idx].cantidad_orden, fact_det[idx].pendiente, fact_det[idx].facturada LET fact_det[idx].pendiente =fact_det[idx].cantidad_orden-fact_det[idx].facturada IF xverdad THEN DISPLAY fact_det[idx].cantidad TO s_fact[idx].cantidad ATTRIBUTE(RED) DISPLAY fact_det[idx].cantidad_orden TO s_fact[idx].cantidad_orden DISPLAY fact_det[idx].pendiente TO s_fact[idx].pendiente DISPLAY fact_det[idx].facturada TO s_fact[idx].facturada ATTRIBUTE(BLACK) ELSE DISPLAY fact_det[idx].cantidad TO s_fact[idx].cantidad ATTRIBUTE(BLACK) DISPLAY fact_det[idx].cantidad_orden TO s_fact[idx].cantidad_orden ATTRIBUTE(BLACK) DISPLAY fact_det[idx].pendiente TO s_fact[idx].pendiente ATTRIBUTE(BLACK) DISPLAY fact_det[idx].facturada TO s_fact[idx].facturada ATTRIBUTE(BLACK) END IF END FOR END IF END IF} BEFORE ROW LET curr = arr_curr() LET scr_l = scr_line() AFTER ROW LET t_arr = arr_count() CALL after_all() { ON KEY (CONTROL-W) LET curr = arr_curr() LET scr_l = scr_line() CASE WHEN INFIELD (cod_n) CALL busca_pt() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false NEXT FIELD cod_n END IF LET fact_det[curr].cod_n = pterminado.cod_n LET fact_det[curr].cod_grupo = pterminado.cod_grupo LET fact_det[curr].cod_tipo = pterminado.cod_tipo LET fact_det[curr].cod_sec = pterminado.cod_sec CALL repite_codigo() IF verdad = "S" THEN NEXT FIELD cod_n END IF LET verdad = NULL CALL precios() IF verdad = "S" THEN NEXT FIELD cod_n END IF SELECT a.descrip_esp,a.unidad_med,SUM(b.cantidad_2) INTO fact_det[curr].descrip_esp,fact_det[curr].unidad_med, p_existencia FROM iptb00002 a,OUTER iptb00006 b WHERE a.cod_n = fact_det[curr].cod_n AND a.cod_grupo = fact_det[curr].cod_grupo AND a.cod_tipo = fact_det[curr].cod_tipo AND a.cod_sec = fact_det[curr].cod_sec AND b.cod_n = a.cod_n AND b.cod_grupo = a.cod_grupo AND b.cod_tipo = a.cod_tipo AND b.cod_sec = a.cod_sec AND a.status_t IS NULL AND b.status_t IS NULL GROUP BY a.descrip_esp,a.unidad_med IF p_existencia IS NULL THEN LET p_existencia = 0 END IF DISPLAY fact_det[curr].cod_n TO s_fact[scr_l].cod_n DISPLAY fact_det[curr].cod_grupo TO s_fact[scr_l].cod_grupo DISPLAY fact_det[curr].cod_tipo TO s_fact[scr_l].cod_tipo DISPLAY fact_det[curr].cod_sec TO s_fact[scr_l].cod_sec DISPLAY fact_det[curr].descrip_esp TO s_fact[scr_l].descrip_esp DISPLAY fact_det[curr].unidad_med TO s_fact[scr_l].unidad_med DISPLAY fact_det[curr].precio TO s_fact[scr_l].precio WHEN INFIELD (cod_grupo) # CALL busca_pt() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false NEXT FIELD cod_n END IF LET fact_det[curr].cod_n = pterminado.cod_n LET fact_det[curr].cod_grupo = pterminado.cod_grupo LET fact_det[curr].cod_tipo = pterminado.cod_tipo LET fact_det[curr].cod_sec = pterminado.cod_sec LET verdad = NULL CALL precios() IF verdad = "S" THEN NEXT FIELD cod_n END IF SELECT a.descrip_esp,a.unidad_med,SUM(b.cantidad_2) INTO fact_det[curr].descrip_esp,fact_det[curr].unidad_med, p_existencia FROM iptb00002 a, OUTER iptb00006 b WHERE a.cod_n = fact_det[curr].cod_n AND a.cod_grupo = fact_det[curr].cod_grupo AND a.cod_tipo = fact_det[curr].cod_tipo AND a.cod_sec = fact_det[curr].cod_sec AND b.cod_n = a.cod_n AND b.cod_grupo = a.cod_grupo AND b.cod_tipo = a.cod_tipo AND b.cod_sec = a.cod_sec AND a.status_t IS NULL AND b.status_t IS NULL GROUP BY 1,2 IF p_existencia IS NULL THEN LET p_existencia = 0 END IF DISPLAY fact_det[curr].cod_n TO s_fact[scr_l].cod_n DISPLAY fact_det[curr].cod_grupo TO s_fact[scr_l].cod_grupo DISPLAY fact_det[curr].cod_tipo TO s_fact[scr_l].cod_tipo DISPLAY fact_det[curr].cod_sec TO s_fact[scr_l].cod_sec DISPLAY fact_det[curr].descrip_esp TO s_fact[scr_l].descrip_esp DISPLAY fact_det[curr].unidad_med TO s_fact[scr_l].unidad_med DISPLAY fact_det[curr].precio TO s_fact[scr_l].precio WHEN INFIELD (cod_tipo) # CALL busca_pt() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false NEXT FIELD cod_n END IF LET fact_det[curr].cod_n = pterminado.cod_n LET fact_det[curr].cod_grupo = pterminado.cod_grupo LET fact_det[curr].cod_tipo = pterminado.cod_tipo LET fact_det[curr].cod_sec = pterminado.cod_sec LET verdad = NULL CALL precios() IF verdad = "S" THEN NEXT FIELD cod_n END IF SELECT a.descrip_esp,a.unidad_med,SUM(b.cantidad_2) INTO fact_det[curr].descrip_esp,fact_det[curr].unidad_med, p_existencia FROM iptb00002 a, OUTER iptb00006 b WHERE a.cod_n = fact_det[curr].cod_n AND a.cod_grupo = fact_det[curr].cod_grupo AND a.cod_tipo = fact_det[curr].cod_tipo AND a.cod_sec = fact_det[curr].cod_sec AND b.cod_n = a.cod_n AND b.cod_grupo = a.cod_grupo AND b.cod_tipo = a.cod_tipo AND b.cod_sec = a.cod_sec AND a.status_t IS NULL AND b.status_t IS NULL GROUP BY 1,2 IF p_existencia IS NULL THEN LET p_existencia = 0 END IF DISPLAY fact_det[curr].cod_n TO s_fact[scr_l].cod_n DISPLAY fact_det[curr].cod_grupo TO s_fact[scr_l].cod_grupo DISPLAY fact_det[curr].cod_tipo TO s_fact[scr_l].cod_tipo DISPLAY fact_det[curr].cod_sec TO s_fact[scr_l].cod_sec DISPLAY fact_det[curr].descrip_esp TO s_fact[scr_l].descrip_esp DISPLAY fact_det[curr].unidad_med TO s_fact[scr_l].unidad_med DISPLAY fact_det[curr].precio TO s_fact[scr_l].precio WHEN INFIELD (cod_sec) # CALL busca_pt() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false NEXT FIELD cod_n END IF LET fact_det[curr].cod_n = pterminado.cod_n LET fact_det[curr].cod_grupo = pterminado.cod_grupo LET fact_det[curr].cod_tipo = pterminado.cod_tipo LET fact_det[curr].cod_sec = pterminado.cod_sec LET verdad = NULL CALL precios() IF verdad = "S" THEN NEXT FIELD cod_n END IF SELECT a.descrip_esp,a.unidad_med,SUM(b.cantidad_2) INTO fact_det[curr].descrip_esp,fact_det[curr].unidad_med, p_existencia FROM iptb00002 a, OUTER iptb00006 b WHERE a.cod_n = fact_det[curr].cod_n AND a.cod_grupo = fact_det[curr].cod_grupo AND a.cod_tipo = fact_det[curr].cod_tipo AND a.cod_sec = fact_det[curr].cod_sec AND b.cod_n = a.cod_n AND b.cod_grupo = a.cod_grupo AND b.cod_tipo = a.cod_tipo AND b.cod_sec = a.cod_sec AND a.status_t IS NULL AND b.status_t IS NULL GROUP BY 1,2 IF p_existencia IS NULL THEN LET p_existencia = 0 END IF DISPLAY fact_det[curr].cod_n TO s_fact[scr_l].cod_n DISPLAY fact_det[curr].cod_grupo TO s_fact[scr_l].cod_grupo DISPLAY fact_det[curr].cod_tipo TO s_fact[scr_l].cod_tipo DISPLAY fact_det[curr].cod_sec TO s_fact[scr_l].cod_sec DISPLAY fact_det[curr].descrip_esp TO s_fact[scr_l].descrip_esp DISPLAY fact_det[curr].unidad_med TO s_fact[scr_l].unidad_med DISPLAY fact_det[curr].precio TO s_fact[scr_l].precio END CASE } AFTER FIELD cod_sec LET curr = arr_curr() IF fact_det[curr].cod_n IS NOT NULL AND fact_det[curr].cod_grupo IS NOT NULL AND fact_det[curr].cod_tipo IS NOT NULL AND fact_det[curr].cod_sec IS NOT NULL THEN # Busca la descripcion del producto con su existencia LET fact_det[curr].descrip_esp = NULL LET fact_det[curr].unidad_med = NULL LET p_existencia = 0 SELECT a.descrip_esp,a.unidad_med INTO fact_det[curr].descrip_esp,fact_det[curr].unidad_med FROM iptb00002 a WHERE a.cod_n = fact_det[curr].cod_n AND a.cod_grupo = fact_det[curr].cod_grupo AND a.cod_tipo = fact_det[curr].cod_tipo AND a.cod_sec = fact_det[curr].cod_sec AND a.status_t IS NULL GROUP BY a.descrip_esp,a.unidad_med IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_n END IF END IF IF p_existencia IS NULL THEN LET p_existencia = 0 END IF # BUSCA LA MARCA DEL PRODUCTO IF p_existencia IS NULL THEN LET p_existencia = 0 END IF LET verdad = NULL #CALL precios() #IF verdad = "S" THEN # NEXT FIELD cod_n #END IF DISPLAY fact_det[curr].descrip_esp,fact_det[curr].unidad_med, fact_det[curr].precio TO s_fact[scr_l].descrip_esp,s_fact[scr_l].unidad_med, s_fact[scr_l].precio AFTER FIELD cantidad {IF fact_det[curr].cod_n IS NOT NULL AND fact_det[curr].cod_grupo IS NOT NULL AND fact_det[curr].cod_tipo IS NOT NULL AND fact_det[curr].cod_sec IS NOT NULL THEN IF control_cantidad = "S" THEN CALL control_cotizacion(fact_det[curr].area, fact_Det[curr].cod_n,fact_det[curr].cod_grupo,fact_det[curr].cod_tipo,fact_det[curr].cod_sec,fact_det[curr].cantidad,fact_gral.orden) RETURNING xverdad,fact_det[curr].cantidad_orden,fact_det[curr].pendiente,fact_det[curr].facturada LET fact_det[idx].pendiente =fact_det[idx].cantidad_orden-fact_det[idx].facturada DISPLAY fact_det[curr].facturada TO s_fact[scr_l].facturada ATTRIBUTE(BLACK) DISPLAY fact_det[curr].cantidad_orden TO s_fact[scr_l].cantidad_orden ATTRIBUTE(BLACK) DISPLAY fact_det[curr].pendiente TO s_fact[scr_l].pendiente ATTRIBUTE(BLACK) IF xverdad THEN CALL fgl_winmessage("ERROR","INCLUYENDO ESTA FACTURA, LA CANTIDAD EXCEDE A LA CANTIDAD ORDENADA","INFO") NEXT FIELD cantidad END IF END IF END IF} AFTER FIELD cantidad_2 #-> Aqui se digita el % de descto. al producto. IF fact_det[curr].cod_n IS NOT NULL AND fact_det[curr].cod_grupo IS NOT NULL AND fact_det[curr].cod_tipo IS NOT NULL AND fact_det[curr].cod_sec IS NOT NULL THEN LET verdad = "N" CALL repite_codigo() IF verdad = "S" THEN NEXT FIELD cod_n END IF END IF IF fact_det[curr].cantidad_2 IS NULL THEN LET fact_det[curr].cantidad_2 = 0 END IF IF fact_det[curr].precio IS NULL THEN LET fact_det[curr].precio = 0 END IF IF fact_det[curr].cantidad IS NOT NULL THEN LET fact_det[curr].monto_fact = fact_det[curr].cantidad * fact_det[curr].precio IF fact_det[curr].cantidad_2 > 0 THEN #-> calcula el valor en descuento para cada articulo vg LET valor_desc = 0 LET valor_desc = fact_det[curr].monto_fact * (fact_det[curr].cantidad_2 / 100) LET fact_gral.desc_valor = fact_gral.desc_valor + valor_desc LET fact_det[curr].monto_fact = fact_det[curr].monto_fact - valor_desc END IF END IF DISPLAY fact_det[curr].monto_fact to s_fact[scr_l].monto_fact AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false DELETE FROM vetb00042 WHERE factura = fact_gral.factura AND cod_mov = p_codigo RETURN END IF IF ch_itbi = 'N' THEN LET fact_gral.porc_itbi =0 END IF DISPLAY BY NAME fact_gral.porc_itbi { IF pconduce IS NULL THEN call dialog.setCellAttributes(att) IF control_cantidad = "S" THEN FOR idx = 1 TO fact_det.getLength() CALL control_cotizacion(fact_det[idx].area, fact_Det[idx].cod_n,fact_det[idx].cod_grupo, fact_det[idx].cod_tipo,fact_det[idx].cod_sec, fact_det[idx].cantidad,fact_gral.orden) RETURNING xverdad, fact_det[idx].cantidad_orden, fact_det[idx].pendiente, fact_det[idx].facturada LET fact_det[idx].pendiente =fact_det[idx].cantidad_orden-fact_det[idx].facturada IF xverdad THEN DISPLAY fact_det[idx].cantidad TO s_fact[idx].cantidad ATTRIBUTE(RED) DISPLAY fact_det[idx].cantidad_orden TO s_fact[idx].cantidad_orden DISPLAY fact_det[idx].pendiente TO s_fact[idx].pendiente DISPLAY fact_det[idx].facturada TO s_fact[idx].facturada ATTRIBUTE(BLACK) CALL fgl_winmessage("ERROR","EXISTE UN ARTICULO QUE PUEDE EXCEDER LA CANTIDAD EN LA ORDEN","INFO") NEXT FIELD cod_n ELSE DISPLAY fact_det[idx].cantidad TO s_fact[idx].cantidad ATTRIBUTE(BLACK) DISPLAY fact_det[idx].cantidad_orden TO s_fact[idx].cantidad_orden ATTRIBUTE(BLACK) DISPLAY fact_det[idx].pendiente TO s_fact[idx].pendiente ATTRIBUTE(BLACK) DISPLAY fact_det[idx].facturada TO s_fact[idx].facturada ATTRIBUTE(BLACK) END IF END FOR END IF END IF} IF fact_det[curr].cod_n IS NOT NULL AND fact_det[curr].cod_grupo IS NOT NULL AND fact_det[curr].cod_tipo IS NOT NULL AND fact_det[curr].cod_sec IS NOT NULL THEN # Busca la descripcion del producto con su existencia LET fact_det[curr].descrip_esp = NULL LET fact_det[curr].unidad_med = NULL LET p_existencia = 0 SELECT a.descrip_esp,a.unidad_med,SUM(b.cantidad_2) INTO fact_det[curr].descrip_esp,fact_det[curr].unidad_med, p_existencia FROM iptb00002 a,OUTER iptb00006 b WHERE a.cod_n = fact_det[curr].cod_n AND a.cod_grupo = fact_det[curr].cod_grupo AND a.cod_tipo = fact_det[curr].cod_tipo AND a.cod_sec = fact_det[curr].cod_sec AND b.cod_n = a.cod_n AND b.cod_grupo = a.cod_grupo AND b.cod_tipo = a.cod_tipo AND b.cod_sec = a.cod_sec AND a.status_t IS NULL AND b.status_t IS NULL GROUP BY a.descrip_esp,a.unidad_med IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_n END IF END IF END INPUT # NCF SET CONNECTION "MSSQL_E" LABEL anterior: PROMPT "Las Informaciones Estan Correctas (S/N)" FOR CHAR opt LET cuenta_arr = arr_count() LET opt = UPSHIFT(opt) IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF IF opt IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) GOTO anterior END IF IF (opt != "S" AND opt != "N") THEN LET numero_msg = -1301 CALL msg(numero_msg) GOTO anterior END IF IF opt = "S" THEN LABEL aqui: LET verdad = "S" IF (opt4 != "S" AND opt4 != "s") THEN IF (opt4 != "n" AND opt4 != "N") THEN LET numero_msg = -1301 CALL msg(numero_msg) GOTO aqui END IF END IF IF fact_gral.ventas = "1" THEN LET fact_gral.prima_us = 1 END IF LET lleva_parcial = "N" # Actualizacion NCF IF fact_gral.fecha_factura > "12312006" THEN SELECT a.ncf INTO kncf FROM vetb00073 a WHERE a.tipo_doc = "FT" and a.codigo_dgii = codigodgii AND a.sucid =1 # SELECT MAX(a.ncf) INTO kncf FROM vetb00072 a # WHERE a.tipo_doc = "FT" and # a.codigo_dgii = codigodgii IF kncf IS NULL THEN LET kncf = 0 END IF LET kncf = kncf + 1 DISPLAY BY NAME kncf SELECT UNIQUE a.itbis INTO ch_itbi FROM vetb00071 a WHERE kncf BETWEEN a.ncf_inicial AND a.ncf_final and a.tipo_doc = "FT" and a.codigo_dgii = codigodgii AND disponible = "S" IF STATUS = NOTFOUND THEN LET numero_msg =391 CALL msg(numero_msg) CALL fgl_winmessage("ERROR","EXISTE PROBLEMA EN LA SECUENCIA DE LOS NCF","INFO") GOTO regresa END IF END IF LABEL brinca: # Actualiza la tabla de datos generales de la factura LET fact_gral.factura = 0 SELECT ult_factura INTO fact_gral.factura FROM vetb00001 WHERE sucid = localidad IF STATUS = NOTFOUND THEN insert into vetb00001 (ult_factura,us_crea,sucid) values (0,usuarios,localidad) let fact_gral.factura = 0 END IF LET fact_gral.factura = fact_gral.factura + 1 BEGIN WORK UPDATE vetb00073 SET ncf = kncf,us_crea = usuarios,fech_crea =getdate() WHERE tipo_doc = "FT" and codigo_dgii = codigodgii AND sucid =1 UPDATE vetb00001 SET ult_factura = fact_gral.factura, us_crea = usuarios, fech_crea = getdate() WHERE sucid =localidad DISPLAY BY NAME fact_gral.factura IF fact_gral.factura IS NOT NULL THEN IF fact_gral.ventas = "1" THEN LET p_codigo = 30 LET tipo_f = "FT" LET tipo_fact = 30 LET fact_gral.prima_us = 1 END IF IF fact_gral.ventas = "2" THEN LET tipo_fact = 31 LET p_codigo = 31 LET tipo_f = "FE" END IF IF fact_gral.ventas = "3" THEN LET tipo_fact = 55 LET p_codigo = 55 LET tipo_f = "FE" END IF IF fact_gral.ventas = "4" THEN SELECT porciento INTO fact_gral.prima_us FROM vetb00019 WHERE disponible = "S" AND status_t IS null LET tipo_fact = 56 LET p_codigo = 56 LET tipo_f = "FE" END IF # INSERTA DOCUMENTO EN TRANSACCIONES NCF INSERT INTO vetb00072 VALUES (fact_gral.factura,"FT",codigodgii,kncf,usuarios,getdate(),localidad) INSERT INTO vetb00002 (cod_cia,factura,fecha_factura,ventas,zona,orden, fecha_orden,conduce,fecha_conduce,tipo_cliente, sec_cliente,cod_vend,sec_vend,cond_pago,porc_itbi, porc_desc,prima_us,sub_total,monto_desc,monto_itbi, neto,fecha_embarque,status_impresion,status_t,us_crea, fech_crea, us_mod, fech_mod,sucid,factura_c,documento,conduce_almacen, nombre_cliente,direccion_cliente,rnc,observaciones) VALUES (fact_gral.cod_cia, fact_gral.factura, fact_gral.fecha_factura, fact_gral.ventas,fact_gral.zona,fact_gral.orden, fact_gral.fecha_orden,fact_gral.conduce,fecha_cotizacion, fact_gral.tipo_cliente,fact_gral.sec_cliente,pconduce,fact_gral.sec_vend, fact_gral.cond_pago,fact_gral.porc_itbi,fact_gral.porc_desc, fact_gral.prima_us,fact_gral.sub_total,fact_gral.desc_valor, fact_gral.itbi,fact_gral.total_fact,fact_gral.fecha_embarque, impresion,NULL,usuarios,getdate(),NULL,NULL,localidad,pconduce,documento_ref,xconduce_almacen, fact_gral.nombre,fact_gral.direccion,num_rnc,observacion) # Actualiza la tabla control de la numeracion de la factura END IF {CALL busca_avance(fact_gral.tipo_cliente,fact_gral.sec_cliente,fact_gral.conduce,fact_gral.total_fact,fact_gral.fecha_factura, fact_gral.sec_vend,localidad,fact_gral.factura,usuarios)} # Actualizacion de la tabla de cuentas por cobrar IF fact_gral.cond_pago > 1 THEN LET p_fecha_ven = fact_gral.fecha_factura + condicion.dias INSERT INTO cctb00001 (cod_cia,tipo_doc,num_doc,tipo_cliente,sec_cliente,cod_emp_sec,fecha_orig, fecha_ven,aplica_a,localidad_aplica_a,valor,costo,monto_desc, us_crea,fech_crea,bodega,sucid,documento_ref,banco,num_oc) VALUES (fact_gral.cod_cia,tipo_f,fact_gral.factura, fact_gral.tipo_cliente,fact_gral.sec_cliente, fact_gral.sec_vend,fact_gral.fecha_factura,p_fecha_ven, fact_gral.factura, localidad,fact_gral.total_fact, t_costos,0, usuarios,getdate(), localidad,localidad,pconduce,fact_gral.conduce,fact_gral.orden) END IF #---------------------------------------------------------------------------------------------------- FOR idx = 1 TO fact_det.getLength() IF fact_det[idx].cod_n IS NOT NULL THEN INSERT INTO vetb00003 (cod_cia,factura,area,cod_n,cod_grupo,cod_tipo,cod_Sec, cantidad,cantidad_2,bonificacion,precio,us_crea,fech_crea,sucid,descripcion) VALUES (fact_gral.cod_cia,fact_gral.factura,fact_det[idx].area, fact_det[idx].cod_n, fact_det[idx].cod_grupo,fact_det[idx].cod_tipo, fact_det[idx].cod_sec,fact_det[idx].cantidad,fact_det[idx].cantidad_2, valor_desc,fact_det[idx].precio,usuarios,getdate(),localidad,fact_det[idx].descrip_esp) # Actualizando la tabla de movimientos de inventario cuando la factura es # normal o Tiene Cantidad a despachar LET fact_det[idx].cantidad = fact_det[idx].cantidad * -1 # IF fact_det[idx].cod_n != 5 THEN INSERT INTO iptb00006 (cod_cia,num_doc,fact_no,fecha,cod_transp,sec_transp, cod_sp,cod_sp_sec,placa,cod_tarifa,cod_mov,cod_n, cod_grupo,cod_tipo,cod_sec,cantidad_2, bodega,us_crea,fech_crea,cotizacion_no,num_oc) VALUES (fact_gral.cod_cia,fact_gral.factura,fact_gral.factura, fact_gral.fecha_factura,fact_gral.cod_transp,fact_gral.sec_transp, fact_gral.tipo_cliente,fact_gral.sec_cliente,fact_gral.placa_transp, fact_gral.cod_tarifa,tipo_fact,fact_det[idx].cod_n, fact_det[idx].cod_grupo,fact_det[idx].cod_tipo, fact_det[idx].cod_sec,fact_det[idx].cantidad,localidad,usuarios,getdate(),fact_gral.conduce, fact_gral.orden) # END IF LET fact_det[idx].cantidad = fact_det[idx].cantidad * -1 LET cant_pend[idx] = cant_pend[idx] * -1 IF p_bonifica[idx] IS NULL THEN LET p_bonifica[idx] = 0 END IF IF opt4 = "N" or opt4 = "n" THEN LET p_bonifica[idx] = 0 END IF END IF END FOR COMMIT WORK # AFECTA REGISTRO PARA LA PRODUCCION. FECHA 15/04/2018. POR JOHNNY SOTO FOR idx = 1 TO fact_det.getLength() # IDENTIFICA EL PRODUCTO POR SU ORIGEN SELECT a.cod_cia INTO cons_fact.cod_cia FROM iptb00002 a WHERE a.cod_n = fact_det[idx].cod_n AND a.cod_grupo = fact_det[idx].cod_grupo AND a.cod_tipo = fact_Det[idx].cod_tipo AND a.cod_Sec = fact_det[idx].cod_sec IF cons_fact.cod_cia = 1 OR cons_fact.cod_cia = 2 THEN # BUSCA DOCUMENTO SECUENCIA PRODUCCION SELECT a.num_doc INTO xdocumento_almacen FROM iptb00007 a WHERE cod_mov = 20 IF xdocumento_almacen IS NULL THEN LET xdocumento_almacen =0 END IF LET xdocumento_almacen=xdocumento_almacen +1 UPDATE iptb00007 SET num_doc = xdocumento_almacen WHERE cod_mov = 20 INSERT INTO iptb00006 (cod_cia,num_doc,fact_no,fecha,cod_mov,cod_n, cod_grupo,cod_tipo,cod_sec,cantidad_2, bodega,us_crea,fech_crea,cotizacion_no,num_oc) VALUES (fact_gral.cod_cia,xdocumento_almacen,fact_gral.factura, fact_gral.fecha_factura,20,fact_det[idx].cod_n, fact_det[idx].cod_grupo,fact_det[idx].cod_tipo, fact_det[idx].cod_sec,fact_det[idx].cantidad,localidad,usuarios,getdate(),fact_gral.conduce, fact_gral.orden) END IF END FOR ELSE GOTO regresa END IF #CALL actualiza_st(fact_gral.orden) #-> Actualiza el status de la orden de produccion vg COLOCO COMENTARIO EN FECHA 27/12/2013 # Impresion de la factura { IF salida = "SVG" OR salida = "PDF" THEN LET HANDLER = configureOutput(salida) START REPORT imp_fact1 TO XML HANDLER handler ELSE 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 imp_fact1 TO archivo END IF FOR idx = 1 TO fact_det.getLength() IF fact_det[idx].cod_n IS NOT NULL AND fact_det[idx].cod_grupo IS NOT NULL AND fact_det[idx].cod_tipo IS NOT NULL AND fact_det[idx].cod_sec IS NOT NULL AND fact_det[idx].cantidad IS NOT NULL AND fact_det[idx].cantidad > 0 THEN LET cod_fact = 1 OUTPUT TO REPORT imp_fact1(fact_gral.*,fact_det[idx].*,tot_porc, p_bonifica[idx],cod_fact,kncf,codigodgii) END IF END FOR FINISH REPORT imp_fact1 IF salida = "MA" THEN RUN imprime END IF } LET impresion = "S" -----------IMPRESION TEST-------------------------------------------- { IF salida = "MA" THEN 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 imp_fact1 TO archivo FOR idx = 1 TO fact_det.getLength() IF fact_det[idx].cod_n IS NOT NULL AND fact_det[idx].cod_grupo IS NOT NULL AND fact_det[idx].cod_tipo IS NOT NULL AND fact_det[idx].cod_sec IS NOT NULL AND fact_det[idx].cantidad IS NOT NULL AND fact_det[idx].cantidad > 0 THEN LET cod_fact = 1 OUTPUT TO REPORT imp_fact1(fact_gral.*,fact_det[idx].*,tot_porc, p_bonifica[idx],cod_fact,kncf,codigodgii) END IF END FOR FINISH REPORT imp_fact1 RUN imprime LET impresion = "S" ELSE } DISPLAY "Estoy aqui" LET r_filename ='veprmt022.4rp' LET r_output=salida LET preview = TRUE 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 --run the report IF handler IS NOT NULL THEN -- report engine was configured ok START REPORT imp_factura TO XML HANDLER handler FOR idx = 1 TO fact_det.getLength() IF fact_det[idx].cod_n IS NOT NULL AND fact_det[idx].cod_grupo IS NOT NULL AND fact_det[idx].cod_tipo IS NOT NULL AND fact_det[idx].cod_sec IS NOT NULL AND fact_det[idx].cantidad IS NOT NULL AND fact_det[idx].cantidad > 0 THEN LET cod_fact = 1 OUTPUT TO REPORT imp_factura(fact_gral.*,fact_det[idx].*,tot_porc, p_bonifica[idx],cod_fact,kncf,codigodgii) END IF END FOR FINISH REPORT imp_factura END IF # END IF --------------------------------------------------------------------- #LET opt3 = fgl_winquestion("PAGO","DESEA EMITIR EL VOLANTE DE PAGO?","NO","YES|NO","QUESTION",0) IF opt3 = "YES" THEN CALL veprfu001() END IF LET numero_msg = 1 CALL msg(numero_msg) CALL fact_det.clear() LET fact_gral.itbi = 0 LET fact_gral.sub_total = 0 LET fact_gral.total_fact = 0 LET fact_gral.desc_valor = 0 GOTO otravez END FUNCTION FUNCTION repite_codigo() LET verdad = NULL LET ant_art.area = fact_det[curr].area LET ant_art.cod_n = fact_det[curr].cod_n LET ant_art.cod_grupo = fact_det[curr].cod_grupo LET ant_art.cod_tipo = fact_det[curr].cod_tipo LET ant_art.cod_sec = fact_det[curr].cod_sec LET ant_art.cantidad = fact_det[curr].cantidad LET ant_art.precio = fact_det[curr].precio FOR idx = 1 TO arr_count() IF idx != curr THEN IF fact_det[idx].cod_n IS NOT NULL AND fact_det[idx].cod_grupo IS NOT NULL AND fact_det[idx].cod_tipo IS NOT NULL AND fact_det[idx].cod_sec IS NOT NULL THEN IF fact_det[idx].cod_n = ant_art.cod_n AND fact_det[idx].cod_grupo = ant_art.cod_grupo AND fact_det[idx].cod_tipo = ant_art.cod_tipo AND fact_det[idx].cod_sec = ant_art.cod_sec AND fact_det[idx].cantidad = ant_art.cantidad AND fact_det[idx].area = ant_art.area AND fact_det[idx].precio = ant_art.precio THEN LET numero_msg = 21 CALL msg(numero_msg) LET verdad = "S" ELSE IF verdad != "S" THEN LET verdad = "N" END IF END IF END IF END IF END FOR END FUNCTION FUNCTION tarifas() OPEN WINDOW busqueda AT 7,12 WITH FORM "vefmwd014" ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST) LET int_flag = false CONSTRUCT criterio ON a.descrip FROM descrip LET selec2 = "SELECT a.cod_tarifa,a.descrip,a.tarifa_pago FROM vetb00023 a ", "WHERE 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_tarifa END IF PREPARE busca_tarifa 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_tarifa CURSOR FOR busca_tarifa LET idx = 1 FOREACH buscar_tarifa INTO arr_tarifa[idx].* LET idx = idx + 1 END FOREACH CALL set_count(idx-1) MESSAGE " Selecciona Tarifa del Transportista Donde Esta el cursor" DISPLAY ARRAY arr_tarifa TO s_datos.* LET curr1 = arr_curr() LET fact_gral.cod_tarifa = arr_tarifa[curr1].cod_tarifa LET descrip6 = arr_tarifa[curr1].descrip LABEL salir_tarifa: CLOSE WINDOW busqueda END FUNCTION FUNCTION condiciones() OPEN WINDOW busqueda AT 7,12 WITH FORM "vefmwd011" ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST) LET int_flag = false CONSTRUCT BY NAME criterio ON a.descrip LET selec2 = "SELECT a.cond_pago, a.descrip", " FROM vetb00012 a", " WHERE ", "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_cond1 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_cond CURSOR FOR busca_cond1 LET idx = 1 FOREACH buscar_cond INTO arr_condicion[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 Empleado donde esta el cursor" DISPLAY ARRAY arr_condicion TO s_condicion.* LET curr1 = arr_curr() LET fact_gral.cond_pago = arr_condicion[curr1].cond_pago LET condicion.descrip = arr_condicion[curr1].descrip LABEL salir_consulta_e: CLOSE WINDOW busqueda END FUNCTION FUNCTION cons_transp() OPEN WINDOW busqueda AT 7,12 WITH FORM "vefmwd012" ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST) LET int_flag = false CONSTRUCT criterio ON a.nombre FROM descrip6 LET selec2 = "SELECT a.cod_transp,a.sec_transp, a.nombre FROM vetb00015 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_e END IF PREPARE busca_transp1 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_transp CURSOR FOR busca_transp1 LET idx = 1 FOREACH buscar_transp INTO arr_transp[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 Empleado donde esta el cursor" DISPLAY ARRAY arr_transp TO s_transp.* LET curr1 = arr_curr() LET fact_gral.cod_transp = arr_transp[curr1].cod_transp LET fact_gral.sec_transp = arr_transp[curr1].sec_transp LET fact_gral.nombre_tran = arr_transp[curr1].nombre LABEL salir_consulta_e: CLOSE WINDOW busqueda END FUNCTION REPORT imp_fact(x,z,porciento,bonifica,cod_f,pncf,Pcodigodgii) DEFINE x RECORD cod_cia LIKE vetb00002.cod_cia, ventas LIKE vetb00002.ventas, zona CHAR(3), factura LIKE vetb00002.factura, bodega SMALLINT, conduce LIKE vetb00002.conduce, fecha_conduce DATE, fecha_factura DATE, tipo_cliente LIKE vetb00002.tipo_cliente, sec_cliente LIKE vetb00002.sec_cliente, nombre CHAR(30), direccion CHAR(80), ciudad CHAR(20), prima_us LIKE vetb00002.prima_us, porc_desc LIKE vetb00002.porc_desc, cond_pago LIKE vetb00002.cond_pago, orden INT, fecha_orden DATE, porc_itbi LIKE vetb00002.porc_itbi, sec_vend LIKE vetb00002.sec_vend, nombre_vend CHAR(60), cod_transp LIKE iptb00006.cod_transp, sec_transp LIKE iptb00006.sec_transp, cod_tarifa LIKE iptb00006.cod_tarifa, nombre_tran CHAR(30), fecha_embarque DATE, placa_transp LIKE iptb00006.placa, sub_total DECIMAL(12,2), desc_valor DECIMAL(12,2), itbi DECIMAL(12,2), total_fact DECIMAL(12,2) END RECORD DEFINE z RECORD area SMALLINT, cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, descrip_esp CHAR(50), unidad_med CHAR(5), cantidad DEC(12,5), precio LIKE vetb00003.precio, cantidad_2 LIKE vetb00003.cantidad_2, monto_fact DECIMAL(12,2), cantidad_orden DEC(12,5), facturada DEC(12,5), pendiente DEC(12,5), id_kit INT END RECORD, Pcodigodgii LIKE vetb00071.codigo_dgii DEFINE cantidad_p INTEGER, i,cod_f SMALLINT DEFINE c_cajas,bonifica,pncf INTEGER DEFINE tot_b,tot_n,tot_m,peso_n,medida,peso_b,valor_kit DECIMAL(12,2), ch_fech CHAR(20) DEFINE porciento DECIMAL(8,3) DEFINE valor_porc DECIMAL (12,2) DEFINE normal,doce,negras,negras_off,doble CHAR(2) DEFINE rnc CHAR(11) DEFINE nombre_vend,apellido_vend CHAR(15) DEFINE comprimido,comprimido_of CHAR(1) DEFINE presenta LIKE iptb00010.conversion DEFINE j,lj,h INTEGER, descripcion_kit VARCHAR(100), cantidad_kit DEC(12,2) OUTPUT TOP MARGIN 2 LEFT MARGIN 0 PAGE LENGTH 65 BOTTOM MARGIN 3 ORDER BY x.factura,z.id_kit,z.cod_n,z.cod_sec FORMAT BEFORE GROUP OF x.factura IF salida = "MA" THEN LET comprimido = ASCII 15 LET comprimido_of = ASCII 18 LET negras = ASCII 27, ASCII 69 LET negras_off = ASCII 27, ASCII 70 LET doble = ASCII 14 LET doce = ASCII 27, ASCII 77 LET normal = ASCII 27, ASCII 80 ELSE LET comprimido = NULL LET comprimido_of = NULL LET negras = NULL LET negras_off = NULL LET doble = NULL LET doce = NULL LET normal = NULL END IF LET lj = (80 - LENGTH(p_companias.nombre CLIPPED))/2 LET j = (90 - LENGTH(p_companias.direccion CLIPPED))/2 LET i = (90 - LENGTH(p_companias.telefono CLIPPED))/2 LET h = (90 - LENGTH(p_companias.rnc CLIPPED))/2 PRINT COLUMN lj, normal,doble,p_companias.nombre CLIPPED PRINT COLUMN j, p_companias.direccion CLIPPED,", ",xnombre_provincia PRINT COLUMN i-9, "Tels : ",p_companias.telefono , " Fax : ",p_companias.fax PRINT COLUMN h-1, "RNC : ",p_companias.rnc CLIPPED, COLUMN 100, "Pag. ", pageno using "###" SELECT num_rnc INTO rnc FROM vetb00004 WHERE tipo_cliente = x.tipo_cliente AND sec_cliente = x.sec_cliente #PRINT normal,comprimido_of IF x.ventas = "1" THEN PRINT COLUMN 4,normal,comprimido_of, negras,"SENORES :" ELSE PRINT COLUMN 4, "SIR :" END IF PRINT COLUMN 4, x.nombre CLIPPED," COD.#",x.tipo_cliente using "&&","-", x.sec_cliente using "&&&&&&" PRINT COLUMN 4, x.direccion CLIPPED," ",cliente_bas.telefono PRINT COLUMN 4, x.ciudad CLIPPED," RNC #",rnc, COLUMN 50, doble,"FACTURA ",x.factura using "&&&&&&&&" PRINT COLUMN 4, pubicacion PRINT COLUMN 4, "NCF: ",pcodigodgii CLIPPED,pncf USING "&&&&&&&&" PRINT COLUMN 4, descripcion PRINT comprimido PRINT "======================================================================================================", "=================================" PRINT COLUMN 2, "COTIZACION", COLUMN 15, "ORDEN", COLUMN 25, "FECHA", COLUMN 37, "SALIDA", COLUMN 60, "CONDICION", COLUMN 80, "VENDEDOR", COLUMN 111, "DOCUMENTO", COLUMN 123, "FECHA FACTURA" PRINT COLUMN 2,x.conduce USING "<<<<<<<", COLUMN 14, x.orden using "&&&&&&", COLUMN 24, x.fecha_orden using "dd/mm/yyyy", COLUMN 37, xconduce_almacen USING "&&&&&&&", COLUMN 60, condicion.descrip CLIPPED, COLUMN 80, "(",x.sec_vend using "&&&&&",") ",x.nombre_vend CLIPPED, COLUMN 111,documento_ref[1,14], COLUMN 126, x.fecha_factura using "dd/mm/yyyy" PRINT "======================================================================================================", "=================================" LET tot_n = 0 LET tot_b = 0 LET tot_m = 0 PRINT COLUMN 5,"CODIGO", COLUMN 21, "CANTIDAD", COLUMN 37, "UNIDADES", COLUMN 50, "DESCRIPCION", COLUMN 102, "PRECIO", COLUMN 114, "DESC.", COLUMN 131, "TOTAL" PRINT "======================================================================================================", "=================================" BEFORE GROUP OF z.id_kit LET descripcion_kit = NULL LET cantidad_kit =0 LET valor_kit = 0 IF z.id_kit IS NOT NULL THEN SELECT a.descrip_esp INTO descripcion_kit FROM iptb00002 a,vetb00051 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 b.id_kit = z.id_kit AND b.cotizacion_no = x.conduce AND b.area = z.area SELECT a.cantidad INTO cantidad_kit FROM vetb00097 a WHERE a.factura = pconduce AND a.id_kit = z.id_kit PRINT COLUMN 13, cantidad_kit USING "#,###.##", "(",z.id_kit USING "<<<<",")", descripcion_kit[1,40], COLUMN 123,valor_kit USING "##,###,###.##" SKIP 1 LINE END IF ON EVERY ROW IF z.cantidad <> 0 THEN LET p_iptb01.factor_conv = 1 LET p_iptb01.unidad = z.unidad_med SELECT a.factor_conv,a.unidad INTO p_iptb01.factor_conv,p_iptb01.unidad FROM iptb00001 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 IF p_iptb01.factor_conv IS NULL OR p_iptb01.factor_conv = 0 THEN LET p_iptb01.factor_conv = 1 LET p_iptb01.unidad = z.unidad_med END IF PRINT COLUMN 5, z.cod_n USING "&&&&","-",z.cod_grupo USING "&&&&","-", z.cod_tipo USING "&&&&","-",z.cod_sec USING "&&&&", COLUMN 13, z.cantidad USING "###,###.###"," ",z.unidad_med CLIPPED, COLUMN 32, z.cantidad/p_iptb01.factor_conv USING "###,###", COLUMN 50, z.descrip_esp CLIPPED, COLUMN 98, z.precio USING "##,###,###.###", COLUMN 114, z.cantidad_2 USING "##.&&", COLUMN 123, z.monto_fact USING "##,###,###.##" END IF AFTER GROUP OF z.id_kit IF z.id_kit IS NOT NULL THEN LET valor_kit = GROUP SUM(z.monto_fact) PRINT COLUMN 123,"==============" PRINT COLUMN 123,valor_kit USING "##,###,###.##" END IF AFTER GROUP OF x.factura # Impresion de informaciones que pertenecen a facturas de exportacion IF x.ventas = "2" or x.ventas = "4" THEN PRINT COLUMN 122,"--------------" PRINT COLUMN 78, "VALOR BRUTO ", COLUMN 122, x.sub_total using "###,###,###.##" IF x.desc_valor <> 0 THEN PRINT COLUMN 77, x.porc_desc using "<<<.##"," %DISCOUNT", COLUMN 122, x.desc_valor using "###,###,###.##" END IF PRINT COLUMN 122, "--------------" PRINT COLUMN 78, "TOTAL F.O.B. PLANT, D.R.", COLUMN 122, x.total_fact using "###,###,###.##" PRINT COLUMN 122, "______________" PRINT COLUMN 122, "--------------" LET ch_fech = x.fecha_embarque using "ddd, mmm. dd, yyyy" LET ch_fech = upshift(ch_fech) PRINT COLUMN 47, "INLAND FREIGHT : COLLECT" PRINT COLUMN 47, "INSURANCE : TO BE COVERED BY CUSTOMER" PRINT COLUMN 47, "TO BE SHIPPED : ", ch_fech #PRINT COLUMN 47, "EXCHANGE RATE : ", x.prima_us USING "###.##" END IF # Impresion de datos que concierne solamente a tipos de facturas locales IF x.ventas = "1" THEN #->PRINT COLUMN 122, "--------------" SKIP 1 LINE PRINT COLUMN 78, "VALOR BRUTO ", COLUMN 122, x.sub_total using "###,###,###.##" IF x.desc_valor <> 0 THEN PRINT COLUMN 77, x.porc_desc using "##"," %DESCUENTO", COLUMN 093, x.desc_valor using "###,###,###.##" #COLUMN 122, x.desc_valor using "###,###,###.##" END IF #-> PRINT COLUMN 122, "--------------" PRINT COLUMN 78, "SUB-TOTAL", COLUMN 119, x.sub_total-x.desc_valor using "RD$###,###,###.##" IF x.porc_itbi > 0 THEN PRINT COLUMN 78,x.porc_itbi using "###.##","%"," ITBIS", COLUMN 122, x.itbi using "###,###,###.##" END IF PRINT COLUMN 122, "--------------" PRINT COLUMN 78, "VALOR NETO ", COLUMN 119, x.total_fact using "RD$###,###,###.##" PRINT COLUMN 122, "==============" END IF IF x.ventas = "3" THEN #->PRINT COLUMN 122, "--------------" SKIP 1 LINE PRINT COLUMN 78, "VALOR BRUTO ", COLUMN 118, x.sub_total using "USD$###,###,###.##" IF x.desc_valor <> 0 THEN PRINT COLUMN 77, x.porc_desc using "##"," %DESCUENTO", COLUMN 093, x.desc_valor using "###,###,###.##" #COLUMN 122, x.desc_valor using "###,###,###.##" END IF #-> PRINT COLUMN 122, "--------------" PRINT COLUMN 78, "SUB-TOTAL", COLUMN 122, x.sub_total-x.desc_valor using "###,###,###.##" IF x.porc_itbi > 0 THEN PRINT COLUMN 78, x.porc_itbi using "###.##","%"," ITBIS", COLUMN 122, x.itbi using "###,###,###.##" END IF PRINT COLUMN 122, "--------------" PRINT COLUMN 78, "VALOR NETO ", COLUMN 118, x.total_fact using "USD$###,###,###.##" PRINT COLUMN 122, "==============" END IF PRINT comprimido_of #SKIP 8 LINE PAGE TRAILER SKIP 1 LINE PRINT doce,comprimido_of LET obs1=observacion[1,50] LET obs2=observacion[51,101] LET obs3=observacion[102,152] LET obs4=observacion[152,180] PRINT COLUMN 3, "OBSERVACIONES: ",UPSHIFT(obs1) CLIPPED," ", UPSHIFT(obs2) CLIPPED PRINT COLUMN 3, " ",UPSHIFT(obs3) CLIPPED," ", UPSHIFT(obs4) CLIPPED # IF x.ventas = 3 THEN # PRINT COLUMN 3, "EXCHANGE RATE : ", x.prima_us USING "###.##" # ELSE # PRINT " " # END IF SKIP 2 LINES PRINT COLUMN 4, "NOMBRE TRANSPORTISTA: ",x.nombre_tran, " ", "CEDULA: ",p_cedula using "&&&&&&&&&", " SERIE: ",p_serie using "&&&" PRINT COLUMN 4, "PLACA DEL VEHICULO: ",x.placa_transp { SKIP 10 LINES PRINT COLUMN 12, x.nombre CLIPPED CALL convierte(x.total_fact) PRINT COLUMN 05, valor_letras clipped, COLUMN 72, x.total_fact using "###,###,###.##" PRINT COLUMN 72, x.factura using "&&&&&" PRINT COLUMN 10, condicion.dias USING "&&" } SKIP 3 LINES PRINT COLUMN 4,"-------------------------------",20 SPACES, "-------------------------------" PRINT COLUMN 4," FACTURADO POR ",20 SPACES, " REVISADO POR " SKIP 4 LINES END REPORT REPORT imp_factura(x,z,porciento,bonifica,cod_f,pncf,pcodigodgii) DEFINE x RECORD cod_cia LIKE vetb00002.cod_cia, ventas LIKE vetb00002.ventas, zona LIKE vetb00002.zona, factura LIKE vetb00002.factura, bodega SMALLINT, conduce LIKE vetb00002.conduce, fecha_conduce LIKE vetb00002.fecha_conduce, fecha_factura LIKE vetb00002.fecha_factura, tipo_cliente LIKE vetb00002.tipo_cliente, sec_cliente LIKE vetb00002.sec_cliente, nombre CHAR(30), direccion CHAR(80), ciudad CHAR(20), prima_us LIKE vetb00002.prima_us, porc_desc LIKE vetb00002.porc_desc, cond_pago LIKE vetb00002.cond_pago, orden INT, fecha_orden LIKE vetb00002.fecha_orden, porc_itbi LIKE vetb00002.porc_itbi, sec_vend LIKE vetb00002.sec_vend, nombre_vend CHAR(30), cod_transp LIKE iptb00006.cod_transp, sec_transp LIKE iptb00006.sec_transp, cod_tarifa LIKE iptb00006.cod_tarifa, nombre_tran CHAR(30), fecha_embarque LIKE vetb00002.fecha_embarque, placa_transp LIKE iptb00006.placa, sub_total DECIMAL(12,2), desc_valor DECIMAL(12,2), itbi DECIMAL(12,2), total_fact DECIMAL(12,2) END RECORD DEFINE z RECORD area SMALLINT, cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, descrip_esp CHAR(50), unidad_med CHAR(4), cantidad DECIMAL(12,5), precio DECIMAL(12,3), cantidad_2 DEC(8,2), monto_fact DECIMAL(12,3), kit_id INT END RECORD DEFINE bonifica INTEGER, i,cod_f SMALLINT, plado1,plado2,plado3,pcantidad,pmedida,total_unidades DEC(12,5), pncf INT, pcodigodgii CHAR(16) DEFINE tot_b,tot_n,tot_m DECIMAL(12,2), ch_fech CHAR(20), descripcion_area CHAR(30) DEFINE porciento DECIMAL(8,3) DEFINE normal,doce,negras,negras_off,doble CHAR(2) DEFINE nombre_vend,apellido_vend CHAR(15) DEFINE comprimido,comprimido_of CHAR(1) DEFINE j,lj,h INTEGER, etiqueta CHAR(30), pfecha_ncf DATE, rnc char(11), ch_ncf char(30) OUTPUT TOP MARGIN 2 LEFT MARGIN 0 #PAGE LENGTH 65 BOTTOM MARGIN 3 ORDER BY x.factura,z.area,z.cod_n,z.cod_grupo,z.cod_tipo,z.cod_Sec FORMAT FIRST PAGE HEADER SELECT b.ncf INTO pncf FROM vetb00072 b WHERE b.documento=x.factura AND tipo_doc='FT' # CALL fgl_winmessage("INFO",p_companias.rnc,"INFO") LET ch_ncf =pcodigodgii CLIPPED,pncf USING "&&&&&&&&" SELECT num_rnc INTO rnc FROM vetb00004 WHERE tipo_cliente = x.tipo_cliente AND sec_cliente = x.sec_cliente SELECT a.fecha_vencimiento,a.tipo_ncf INTO pfecha_ncf,descripcion FROM vetb00071 a WHERE (a.tipo_doc = "FT" and a.codigo_dgii = pcodigodgii) DISPLAY "fecha",pfecha_ncf," ",kncf," ",pcodigodgii PRINT comprimido SELECT a.nom1_emp,a.apell1_emp INTO p_adtb03.nom1_emp,p_adtb03.apell1_emp FROM adtb00003 a WHERE a.num_emp = fact_gral.sec_vend IF x.cond_pago > 1 AND x.ventas = "1" THEN LET nombre_vend = p_adtb03.nom1_emp CLIPPED LET apellido_vend = p_adtb03.apell1_emp CLIPPED END IF IF x.ventas = "2" THEN LET nombre_vend = p_adtb03.nom1_emp LET apellido_vend = NULL END IF { IF genera_ncf = "NO" THEN LET ch_ncf=" " LET pfecha_ncf="" END IF } LET tot_n = 0 LET tot_b = 0 LET tot_m = 0 BEFORE GROUP OF z.area SELECT a.nombre_area INTO descripcion_area FROM prtb00016 a WHERE a.area_num=Z.area ON EVERY ROW PRINTX x.*,p_companias.*,rnc,condicion.descrip,pcodigodgii,pncf,descripcion, documento_ref,z.*,observacion,cliente_bas.*,fecha_vencimiento,ch_ncf,pfecha_ncf,pcotizacion ON LAST ROW PAGE TRAILER END REPORT REPORT imp_fact1(x,z,porciento,bonifica,cod_f,pncf,Pcodigodgii) DEFINE x RECORD cod_cia LIKE vetb00002.cod_cia, ventas LIKE vetb00002.ventas, zona CHAR(3), factura LIKE vetb00002.factura, bodega SMALLINT, conduce LIKE vetb00002.conduce, fecha_conduce DATE, fecha_factura DATE, tipo_cliente LIKE vetb00002.tipo_cliente, sec_cliente LIKE vetb00002.sec_cliente, nombre CHAR(30), direccion CHAR(170), ciudad CHAR(20), prima_us LIKE vetb00002.prima_us, porc_desc LIKE vetb00002.porc_desc, cond_pago LIKE vetb00002.cond_pago, orden INT, fecha_orden DATE, porc_itbi LIKE vetb00002.porc_itbi, sec_vend LIKE vetb00002.sec_vend, nombre_vend CHAR(60), cod_transp LIKE iptb00006.cod_transp, sec_transp LIKE iptb00006.sec_transp, cod_tarifa LIKE iptb00006.cod_tarifa, nombre_tran CHAR(30), fecha_embarque DATE, placa_transp LIKE iptb00006.placa, sub_total DECIMAL(12,2), desc_valor DECIMAL(12,2), itbi DECIMAL(12,2), total_fact DECIMAL(12,2) END RECORD DEFINE z RECORD area SMALLINT, cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, descrip_esp CHAR(50), unidad_med CHAR(5), cantidad DEC(12,5), precio LIKE vetb00003.precio, cantidad_2 LIKE vetb00003.cantidad_2, monto_fact DECIMAL(12,2), cantidad_orden DEC(12,5), facturada DEC(12,5), pendiente DEC(12,5), id_kit INT END RECORD, Pcodigodgii LIKE vetb00071.codigo_dgii DEFINE cantidad_p INTEGER, i,cod_f SMALLINT DEFINE c_cajas,bonifica,pncf INTEGER DEFINE tot_b,tot_n,tot_m,peso_n,medida,peso_b,valor_kit DECIMAL(12,2), ch_fech CHAR(20) DEFINE porciento DECIMAL(8,3) DEFINE valor_porc DECIMAL (12,2) DEFINE normal,doce,negras,negras_off,doble CHAR(2) DEFINE rnc CHAR(11) DEFINE nombre_vend,apellido_vend CHAR(15) DEFINE comprimido,comprimido_of CHAR(1) DEFINE presenta LIKE iptb00010.conversion DEFINE j,lj,h INTEGER, descripcion_kit VARCHAR(100), cantidad_kit DEC(12,2) OUTPUT TOP MARGIN 4 LEFT MARGIN 0 PAGE LENGTH 65 BOTTOM MARGIN 3 ORDER BY x.factura,z.id_kit,z.cod_n,z.cod_sec FORMAT PAGE HEADER IF salida = "MA" THEN LET comprimido = ASCII 15 LET comprimido_of = ASCII 18 LET negras = ASCII 27, ASCII 69 LET negras_off = ASCII 27, ASCII 70 LET doble = ASCII 14 LET doce = ASCII 27, ASCII 77 LET normal = ASCII 27, ASCII 80 ELSE LET comprimido = NULL LET comprimido_of = NULL LET negras = NULL LET negras_off = NULL LET doble = NULL LET doce = NULL LET normal = NULL END IF SELECT num_rnc INTO rnc FROM vetb00004 WHERE tipo_cliente = x.tipo_cliente AND sec_cliente = x.sec_cliente AND status_t IS NULL LET lj = (80 - LENGTH(p_companias.nombre CLIPPED))/2 LET j = (90 - LENGTH(p_companias.direccion CLIPPED))/2 LET i = (90 - LENGTH(p_companias.telefono CLIPPED))/2 LET h = (90 - LENGTH(p_companias.rnc CLIPPED))/2 SELECT a.nombre INTO p_companias.nombre FROM companias a #-------------------------------------------------------- PRINT COLUMN 1, normal,doble,p_companias.nombre CLIPPED PRINT COLUMN 1,doce, p_companias.direccion CLIPPED," ",xnombre_provincia," ", COLUMN 61, descripcion[1,29] PRINT COLUMN 1, sucnombre, COLUMN 61,descripcion[30,60] PRINT COLUMN 1, "RNC : ",p_companias.rnc, COLUMN 60,"NCF: ",pcodigodgii CLIPPED,pncf USING "&&&&&&&&" PRINT COLUMN 1, "Tels : ",p_companias.telefono , " Fax : ",p_companias.fax, COLUMN 61, "Valida Hasta: ",fecha_vencimiento USING "dd/mm/yyyy" PRINT COLUMN 1, "Pag. ", pageno using "###" SKIP 1 LINE #-------------------------------------------------------- SELECT a.num_rnc INTO rnc FROM vetb00004 a WHERE a.tipo_cliente = x.tipo_cliente AND a.sec_cliente = x.sec_cliente AND a.status_t IS NULL PRINT COLUMN 1,"----------------------------------------------------------------------------------------------" PRINT COLUMN 1, "RNC CLIENTE: ",rnc IF x.ventas = "1" THEN PRINT COLUMN 1, negras,"SENORES :" ELSE PRINT COLUMN 1, "SIR :" END IF PRINT COLUMN 1, x.nombre CLIPPED," COD.#",x.tipo_cliente using "&&","-", x.sec_cliente using "&&&&&&" PRINT COLUMN 1, x.direccion CLIPPED," ",cliente_bas.telefono PRINT COLUMN 1, x.ciudad CLIPPED PRINT COLUMN 1, pubicacion[1,70] PRINT COLUMN 1, pubicacion[71,80] PRINT COLUMN 60, doble,"FACTURA ",x.factura using "&&&&&&&&" PRINT COLUMN 1,"--------------------------------------------------------------------------------------------" PRINT normal,comprimido PRINT "======================================================================================================", "=================================" PRINT COLUMN 2, "COTIZACION", COLUMN 15, "ORDEN", COLUMN 25, "FECHA", COLUMN 37, "SALIDA", COLUMN 60, "CONDICION", COLUMN 80, "VENDEDOR", COLUMN 111, "DOCUMENTO", COLUMN 123, "FECHA FACTURA" PRINT COLUMN 2,x.conduce USING "<<<<<<<", COLUMN 14, x.orden using "&&&&&&", COLUMN 24, x.fecha_orden using "dd/mm/yyyy", COLUMN 37, xconduce_almacen USING "&&&&&&&", COLUMN 60, condicion.descrip CLIPPED, COLUMN 80, "(",x.sec_vend using "&&&&&",") ",x.nombre_vend CLIPPED, COLUMN 111,documento_ref[1,14], COLUMN 126, x.fecha_factura using "dd/mm/yyyy" PRINT "======================================================================================================", "=================================" LET tot_n = 0 LET tot_b = 0 LET tot_m = 0 PRINT COLUMN 5,"CODIGO", COLUMN 21, "CANTIDAD", COLUMN 37, "UNIDADES", COLUMN 50, "DESCRIPCION", COLUMN 102, "PRECIO", COLUMN 114, "DESC.", COLUMN 131, "TOTAL" PRINT "======================================================================================================", "=================================" BEFORE GROUP OF z.id_kit LET descripcion_kit = NULL LET cantidad_kit =0 LET valor_kit = 0 IF z.id_kit IS NOT NULL THEN SELECT a.descrip_esp INTO descripcion_kit FROM iptb00002 a,vetb00051 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 b.id_kit = z.id_kit AND b.cotizacion_no = x.conduce AND b.area = z.area SELECT a.cantidad INTO cantidad_kit FROM vetb00097 a WHERE a.factura = pconduce AND a.id_kit = z.id_kit PRINT COLUMN 13, cantidad_kit USING "#,###.##", "(",z.id_kit USING "<<<<",")", descripcion_kit[1,40], COLUMN 123,valor_kit USING "##,###,###.##" SKIP 1 LINE END IF ON EVERY ROW IF z.cantidad <> 0 THEN LET p_iptb01.factor_conv = 1 LET p_iptb01.unidad = z.unidad_med SELECT a.factor_conv,a.unidad INTO p_iptb01.factor_conv,p_iptb01.unidad FROM iptb00001 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 IF p_iptb01.factor_conv IS NULL OR p_iptb01.factor_conv = 0 THEN LET p_iptb01.factor_conv = 1 LET p_iptb01.unidad = z.unidad_med END IF PRINT COLUMN 5, z.cod_n USING "&&&&","-",z.cod_grupo USING "&&&&","-", z.cod_tipo USING "&&&&","-",z.cod_sec USING "&&&&", COLUMN 13, z.cantidad USING "###,###.###"," ",z.unidad_med CLIPPED, COLUMN 32, z.cantidad/p_iptb01.factor_conv USING "###,###", COLUMN 50, z.descrip_esp CLIPPED, COLUMN 98, z.precio USING "##,###,###.###", COLUMN 114, z.cantidad_2 USING "##.&&", COLUMN 123, z.monto_fact USING "##,###,###.##" END IF AFTER GROUP OF z.id_kit IF z.id_kit IS NOT NULL THEN LET valor_kit = GROUP SUM(z.monto_fact) PRINT COLUMN 123,"==============" PRINT COLUMN 123,valor_kit USING "##,###,###.##" END IF AFTER GROUP OF x.factura # Impresion de informaciones que pertenecen a facturas de exportacion IF x.ventas = "2" or x.ventas = "4" THEN PRINT COLUMN 122,"--------------" PRINT COLUMN 78, "VALOR BRUTO ", COLUMN 122, x.sub_total using "###,###,###.##" IF x.desc_valor <> 0 THEN PRINT COLUMN 77, x.porc_desc using "<<<.##"," %DISCOUNT", COLUMN 122, x.desc_valor using "###,###,###.##" END IF PRINT COLUMN 122, "--------------" PRINT COLUMN 78, "TOTAL F.O.B. PLANT, D.R.", COLUMN 122, x.total_fact using "###,###,###.##" PRINT COLUMN 122, "______________" PRINT COLUMN 122, "--------------" LET ch_fech = x.fecha_embarque using "ddd, mmm. dd, yyyy" LET ch_fech = upshift(ch_fech) PRINT COLUMN 47, "INLAND FREIGHT : COLLECT" PRINT COLUMN 47, "INSURANCE : TO BE COVERED BY CUSTOMER" PRINT COLUMN 47, "TO BE SHIPPED : ", ch_fech #PRINT COLUMN 47, "EXCHANGE RATE : ", x.prima_us USING "###.##" END IF # Impresion de datos que concierne solamente a tipos de facturas locales IF x.ventas = "1" THEN #->PRINT COLUMN 122, "--------------" SKIP 1 LINE PRINT COLUMN 78, "VALOR BRUTO ", COLUMN 122, x.sub_total using "###,###,###.##" IF x.desc_valor <> 0 THEN PRINT COLUMN 77, x.porc_desc using "##"," %DESCUENTO", COLUMN 093, x.desc_valor using "###,###,###.##" #COLUMN 122, x.desc_valor using "###,###,###.##" END IF #-> PRINT COLUMN 122, "--------------" PRINT COLUMN 78, "SUB-TOTAL", COLUMN 119, x.sub_total-x.desc_valor using "RD$###,###,###.##" IF x.porc_itbi > 0 THEN PRINT COLUMN 78,x.porc_itbi using "###.##","%"," ITBIS", COLUMN 122, x.itbi using "###,###,###.##" END IF PRINT COLUMN 122, "--------------" PRINT COLUMN 78, "VALOR NETO ", COLUMN 119, x.total_fact using "RD$###,###,###.##" PRINT COLUMN 122, "==============" END IF IF x.ventas = "3" THEN #->PRINT COLUMN 122, "--------------" SKIP 1 LINE PRINT COLUMN 78, "VALOR BRUTO ", COLUMN 118, x.sub_total using "USD$###,###,###.##" IF x.desc_valor <> 0 THEN PRINT COLUMN 77, x.porc_desc using "##"," %DESCUENTO", COLUMN 093, x.desc_valor using "###,###,###.##" #COLUMN 122, x.desc_valor using "###,###,###.##" END IF #-> PRINT COLUMN 122, "--------------" PRINT COLUMN 78, "SUB-TOTAL", COLUMN 122, x.sub_total-x.desc_valor using "###,###,###.##" IF x.porc_itbi > 0 THEN PRINT COLUMN 78, x.porc_itbi using "###.##","%"," ITBIS", COLUMN 122, x.itbi using "###,###,###.##" END IF PRINT COLUMN 122, "--------------" PRINT COLUMN 78, "VALOR NETO ", COLUMN 118, x.total_fact using "USD$###,###,###.##" PRINT COLUMN 122, "==============" END IF PRINT comprimido_of #SKIP 8 LINE PAGE TRAILER SKIP 1 LINE PRINT doce,comprimido_of LET obs1=observacion[1,50] LET obs2=observacion[51,101] LET obs3=observacion[102,152] LET obs4=observacion[152,180] PRINT COLUMN 3, "OBSERVACIONES: ",UPSHIFT(obs1) CLIPPED," ", UPSHIFT(obs2) CLIPPED PRINT COLUMN 3, " ",UPSHIFT(obs3) CLIPPED," ", UPSHIFT(obs4) CLIPPED # IF x.ventas = 3 THEN # PRINT COLUMN 3, "EXCHANGE RATE : ", x.prima_us USING "###.##" # ELSE # PRINT " " # END IF SKIP 2 LINES PRINT COLUMN 4, "NOMBRE TRANSPORTISTA: ",x.nombre_tran, " ", "CEDULA: ",p_cedula using "&&&&&&&&&", " SERIE: ",p_serie using "&&&" PRINT COLUMN 4, "PLACA DEL VEHICULO: ",x.placa_transp { SKIP 10 LINES PRINT COLUMN 12, x.nombre CLIPPED CALL convierte(x.total_fact) PRINT COLUMN 05, valor_letras clipped, COLUMN 72, x.total_fact using "###,###,###.##" PRINT COLUMN 72, x.factura using "&&&&&" PRINT COLUMN 10, condicion.dias USING "&&" } SKIP 3 LINES PRINT COLUMN 4,"-------------------------------",20 SPACES, "-------------------------------" PRINT COLUMN 4," FACTURADO POR ",20 SPACES, " REVISADO POR " SKIP 4 LINES END REPORT FUNCTION veprfu001() DEFINE pagos RECORD documento LIKE vetb00002.factura, detalle CHAR(30), factura LIKE vetb00002.factura, cheque_no LIKE cctb00001.num_cheque, banco LIKE cctb00001.banco, valor_cheque DECIMAL(12,2), valor_efectivo DECIMAL (12,2), valor_total DEC(12,2) END RECORD, recibo_existe CHAR(2) OPEN WINDOW captura AT 7,12 WITH FORM "vefmwd013" ATTRIBUTE (BORDER,FORM LINE FIRST + 1,COMMENT LINE LAST) LET recibo_existe = "SI" SELECT a.num_doc,a.nombre,a.fecha,a.tipo_cliente,a.sec_cliente,a.documento_ref,a.banco,a.otro_valor, a.valor,a.factura INTO pagos.documento,pagos.detalle,fact_gral.fecha_factura,fact_gral.tipo_cliente, fact_gral.sec_cliente,pagos.cheque_no,pagos.banco,pagos.valor_cheque,pagos.valor_efectivo,pagos.factura FROM cctb00042 a WHERE a.factura = fact_gral.factura AND a.sucid = localidad IF STATUS = NOTFOUND THEN INPUT BY NAME pagos.* BEFORE INPUT LET pagos.factura = fact_gral.factura LET pagos.valor_efectivo = fact_gral.total_fact LET pagos.detalle = fact_gral.nombre LET recibo_existe = "NO" LET pagos.valor_total = pagos.valor_efectivo DISPLAY BY NAME pagos.factura,pagos.valor_efectivo,pagos.detalle,pagos.valor_total, pagos.documento,pagos.cheque_no,pagos.factura AFTER FIELD detalle IF pagos.detalle IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD detalle END IF AFTER INPUT IF int_flag THEN LET opt3 = fgl_winquestion("SALIR","ESTA SEGURO DE CANCELAR LA OPERACION?","NO","YES|NO","QUESTION",0) IF opt3 = "YES" THEN EXIT INPUT ELSE CONTINUE INPUT END IF END IF IF pagos.valor_cheque IS NULL THEN LET pagos.valor_cheque = 0 END IF IF pagos.valor_efectivo IS NULL THEN LET pagos.valor_efectivo = 0 END IF LET pagos.valor_total = pagos.valor_cheque+pagos.valor_efectivo DISPLAY BY NAME pagos.valor_total ATTRIBUTE(BOLD) LET opt3 = "NO" # LET opt3 = fgl_winquestion("EJECUTAR","ESTA SEGURO DE EMITIR ESTE RECIBO?","YES","YES|NO","QUESTION",0) IF opt3 = "NO" THEN CONTINUE INPUT END IF END INPUT IF INT_FLAG THEN LET int_flag = FALSE CLOSE WINDOW captura RETURN END IF LET p_fecha_ven = "01/01/01" LET fact_gral.total_fact = fact_gral.total_fact * -1 IF fact_gral.total_fact IS NULL THEN LET fact_gral.total_fact = 0 END IF IF recibo_existe = "NO" THEN IF fact_gral.total_fact <> 0 THEN LET pagos.documento = 0 # para marmotech se esta continuando con la secuencia en el tipo de documento AV SELECT ult_recibo INTO pagos.documento FROM cctb00003 WHERE tipo_doc = "RC" IF pagos.documento IS NULL THEN LET pagos.documento = 0 END IF LET pagos.documento = pagos.documento + 1 DISPLAY BY NAME pagos.documento INSERT INTO cctb00042 (num_doc,tipo_doc,nombre,fecha,tipo_cliente,sec_cliente,documento_ref, banco,otro_valor, valor,us_crea,fech_crea,sucid) VALUES (pagos.documento,'RC',fact_gral.nombre,fact_gral.fecha_factura,fact_gral.tipo_cliente,fact_gral.sec_cliente, pagos.cheque_no,pagos.banco,pagos.valor_cheque,pagos.valor_efectivo,usuarios,getdate(),localidad) INSERT INTO cctb00001 (cod_cia,tipo_doc,num_doc,tipo_cliente,sec_cliente,cod_emp_sec,fecha_orig, fecha_ven,aplica_a,localidad_aplica_a,num_cheque,valor,valor_efectivo, valor_cheque,monto_Desc, us_crea,fech_crea,bodega,sucid,documento_ref,banco) VALUES (fact_gral.cod_cia,"RC",pagos.documento, fact_gral.tipo_cliente,fact_gral.sec_cliente, fact_gral.sec_vend,fact_gral.fecha_factura,p_fecha_ven, fact_gral.factura,localidad,pagos.cheque_no, fact_gral.total_fact,pagos.valor_efectivo,pagos.valor_cheque, 0,usuarios,getdate(),localidad,localidad,pconduce,fact_gral.conduce) LET fact_gral.total_fact = fact_gral.total_fact * -1 UPDATE cctb00003 SET ult_recibo = pagos.documento WHERE tipo_doc = "RC" END IF ELSE DISPLAY BY NAME pagos.* END IF LET opt3 = "NO" #LET opt3 = fgl_winquestion("EJECUTAR","ESTA SEGURO DE EMITIR ESTE RECIBO?","YES","YES|NO","QUESTION",0) IF opt3 = "YES" THEN CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of, doble_on,doble_off,comp_on,comp_off, doce,normal,archivo,copia LET p_companias.nombre= sucnombre START REPORT volante TO archivo OUTPUT TO REPORT volante(fact_gral.tipo_cliente,fact_gral.sec_cliente,fact_gral.fecha_factura, pagos.documento,fact_gral.sec_vend,"RC"," ",pagos.banco,fact_gral.factura, 0,pagos.valor_total,fact_gral.nombre,fact_gral.nombre_vend," ",pagos.banco) FINISH REPORT volante IF salida = "MA" THEN RUN imprime END IF END IF CLOSE WINDOW captura END IF END FUNCTION FUNCTION anular() DEFINE motivo VARCHAR(200) LET p_fact_no = fact_gral.factura INPUT BY NAME motivo AFTER INPUT IF motivo IS NULL THEN CALL msg(16) NEXT FIELD motivo END IF LET bandera = 0 CALL prd(fact_gral.fecha_factura,usuarios) RETURNING bandera IF bandera = 1 THEN LET bandera = 0 EXIT INPUT END IF EXIT INPUT END INPUT IF bandera = 1 THEN RETURN END IF SET CONNECTION "MSSQL_E" #CONTROL DOCUMENTO CUENTAS POR COBRAR SELECT DISTINCT a.aplica_a FROM cctb00001 a WHERE a.aplica_a = p_fact_no AND a.tipo_cliente = fact_gral.tipo_cliente AND a.sec_cliente = fact_gral.sec_cliente AND a.tipo_doc NOT IN ("FT","FE",'AP','PC') AND a.status_t IS NULL IF STATUS <> NOTFOUND THEN CALL fgl_winmessage("ERROR","NO PUEDE ANULAR FACTURA, TIENE DOCUMENTOS EN CUENTAS POR COBRAR","INFO") RETURN END IF BEGIN WORK UPDATE vetb00002 SET observaciones = motivo, status_t = "E", us_mod = usuarios, fech_mod = getdate() WHERE factura = p_fact_no AND sucid = localidad UPDATE iptb00006 SET status_t = "E", us_mod = usuarios, fech_mod = getdate() WHERE num_doc = p_fact_no AND cod_mov IN (30,31,32,55) AND bodega = localidad UPDATE vetb00003 SET status_t = "E", us_mod = usuarios, fech_mod = getdate() WHERE factura = p_fact_no AND sucid =localidad UPDATE cctb00001 SET status_t = "E", us_mod = USUARIOS, fech_mod = getdate() WHERE num_doc = p_fact_no AND (tipo_doc = "FT" or tipo_doc = "FE") AND sucid = localidad UPDATE cctb00001 SET status_t = "E", us_mod = USUARIOS, fech_mod = getdate() WHERE aplica_a = p_fact_no AND tipo_doc = "RC" AND sucid = localidad COMMIT WORK # SET CONNECTION "MSSQL_C" UPDATE vetb00002 SET factura_ext = NULL,us_mod = usuarios,fech_mod = getdate() WHERE factura_Ext =p_fact_no AND sucoid = localidad AND status_t IS null CALL fgl_Winmessage("INFO","FACTURA ANULADA","INFO") END FUNCTION FUNCTION precios() # AQUI HAY QUE BUSCAR EL PRECIO PARA CALCULAR POR CLIENTE LET p_costos1 = 0 SELECT precio INTO p_costos1 FROM vetb00025 WHERE ventas = fact_gral.ventas AND tipo_cliente = fact_gral.tipo_cliente AND sec_cliente = fact_gral.sec_cliente AND cod_n=fact_det[curr].cod_n AND cod_grupo=fact_det[curr].cod_grupo AND cod_tipo=fact_det[curr].cod_tipo AND cod_sec = fact_det[curr].cod_sec AND status_t IS NULL IF STATUS = NOTFOUND THEN SELECT precio INTO p_costos1 FROM vetb00025 WHERE ventas = fact_gral.ventas AND tipo_cliente IS NULL AND sec_cliente IS NULL AND cod_n = fact_det[curr].cod_n AND cod_grupo = fact_det[curr].cod_grupo AND cod_tipo = fact_det[curr].cod_tipo AND cod_sec = fact_det[curr].cod_sec AND status_t IS NULL IF STATUS = NOTFOUND THEN LET numero_msg = 85 CALL msg(numero_msg) LET verdad = "N" END IF {IF fact_det[curr].cod_n = 2 THEN LET verdad = "N" END IF} END IF LET fact_det[curr].precio = p_costos1 END FUNCTION FUNCTION ver_desc() OPEN WINDOW descuentos AT 10,5 WITH FORM "vefmwd007" ATTRIBUTE (BORDER,FORM LINE FIRST +1,COMMENT LINE LAST -1,MESSAGE LINE LAST) CALL set_count(h-1) DISPLAY ARRAY descuenta TO s_desc.* CLOSE WINDOW descuentos END FUNCTION FUNCTION detalles() OPEN WINDOW wdetalle AT 12,2 WITH FORM "vefmwd075" ATTRIBUTE(BORDER,FORM LINE FIRST +1) INPUT BY NAME observacion WITHOUT DEFAULTS CLOSE WINDOW wdetalle END FUNCTION FUNCTION cantidad_desp(forden,fcod_n,fcod_tipo,fcod_grupo,fcod_sec) DEFINE forden INTEGER, fcod_n,fcod_tipo,fcod_grupo,fcod_sec SMALLINT SELECT SUM(b.cantidad) INTO cant_vend FROM vetb00002 a, vetb00003 b WHERE a.orden = forden AND a.fecha_factura > "31122000" AND a.factura = b.factura AND b.cod_n = fcod_n AND b.cod_tipo = fcod_tipo AND b.cod_grupo = fcod_grupo AND b.cod_sec = fcod_sec AND a.status_t IS NULL and b.status_t is NULL IF STATUS = NOTFOUND THEN LET cant_vend = 0 END IF END FUNCTION FUNCTION actualiza_st(forden) DEFINE forden INTEGER, prod_total,vent_total DEC(8,2) SELECT SUM(a.cantidad) INTO prod_total FROM prtb00013 a WHERE a.num_oc = forden IF STATUS = NOTFOUND THEN LET prod_total = 0 END IF SELECT SUM(b.cantidad) INTO vent_total FROM vetb00002 a, vetb00003 b WHERE a.orden = forden AND a.fecha_factura > "31122000" AND a.factura = b.factura AND a.tipo_cliente = fact_gral.tipo_cliente AND a.sec_cliente = fact_gral.sec_cliente AND a.status_t IS NULL AND b.status_t IS NULL IF STATUS = NOTFOUND THEN LET vent_total = 0 END IF END FUNCTION FUNCTION convierte(valor_origen) # Funcion para convertir de valor a letras DEFINE valor_origen DECIMAL(12,2) DEFINE consegui CHAR(1) DEFINE p,miles,m,k,a,b,d,c,entero,unidades_mi,unidades_m,unidad,mil,millon, unid_c,u INTEGER DEFINE cheles DECIMAL (7,2) CALL letras() LET valor_letras = null LET consegui = "N" LET entero = valor_origen LET cheles = (valor_origen - entero) * 100 LET unidad = entero / 100 LET unidad = entero - (unidad * 100) LET a = entero / 1000 LET a = entero - (a * 1000) LET d = entero - 19 IF d >= 82 THEN LET c = entero / 100 # Para Controlar los miles y los cientos IF c <= 9 THEN LET valor_letras = valor_letras clipped," ",centenas[c] clipped ELSE LET c = entero / 1000 LET b = entero / 1000000 END IF IF d > 19 THEN LET d = unidad - 19 END IF IF unidad > 0 and unidad < 20 THEN LET d = unidad LET valor_letras = valor_letras clipped," ",unidades1[d] clipped LET consegui = "S" END IF ELSE IF d > 0 AND d <= 81 THEN LET valor_letras = valor_letras clipped," ",decenas[d] clipped LET consegui = "S" END IF END IF # Para controlar los miles IF entero > 999 THEN LET unidades_m = a / 100 LET unidades_m = a - (unidades_m * 100) LET valor_letras = null IF c = 1 THEN LET valor_letras = "MIL" END IF IF c > 1 and c <= 19 THEN LET valor_letras = valor_letras clipped," ",unidades1[c] clipped," ","MIL" END IF IF c >= 20 and c <= 999 THEN IF c < 82 THEN LET c = c - 19 LET valor_letras = valor_letras clipped," ",decenas[c] clipped ELSE LET k = c / 100 LET valor_letras = valor_letras clipped," ",centenas[k] clipped LET unid_c = c - (k * 100) IF unid_c >= 20 THEN LET unid_c = unid_c - 19 LET valor_letras = valor_letras clipped," ",decenas[unid_c] clipped END IF END IF LET valor_letras = valor_letras clipped," ","MIL" END IF LET c = a IF c > 100 THEN LET c = c / 100 LET valor_letras = valor_letras clipped," ",centenas[c] clipped END IF IF c = 100 THEN LET valor_letras = valor_letras clipped," ",decenas[81] clipped END IF IF unidades_m > 0 and unidades_m <= 19 THEN LET a = unidades_m LET valor_letras = valor_letras clipped, " ",unidades1[a] clipped { ELSE LET a = unidades_m - 19 LET valor_letras = valor_letras clipped, " ",unidades1[a] clipped} END IF END IF # Para Controlar cantidades en millones IF entero > 999999 THEN LET c = 0 LET miles = entero - 1000000 LET m = miles / 1000 LET p = miles - (m * 1000) LET u = m / 100 LET u = m - (u * 100) LET unidades_mi = p LET unidades_mi = unidades_mi / 100 LET unidades_mi = p - (unidades_mi * 100) LET valor_letras = null IF b = 1 THEN LET valor_letras = "UN MILLON" END IF IF b > 1 and b <= 19 THEN LET valor_letras = valor_letras clipped," ",unidades1[b] clipped," ", "MILLONES" END IF IF b >= 20 and b <= 999999 THEN IF b < 82 THEN LET b = b - 19 LET valor_letras = valor_letras clipped," ",decenas[b] clipped," ", "MILLONES" ELSE LET k = b / 100 LET valor_letras = valor_letras clipped," ",centenas[k] clipped," ", "MILLONES" END IF END IF LET b = m IF b > 100 THEN LET b = b / 100 LET valor_letras = valor_letras clipped," ",centenas[b] clipped IF u > 0 and u <= 19 THEN IF u = 1 THEN LET unidades1[1] = "UN" END IF LET valor_letras = valor_letras clipped," ",unidades1[u] clipped END IF LET valor_letras = valor_letras clipped," ","MIL" END IF IF p > 100 THEN LET p = p / 100 LET valor_letras = valor_letras clipped," ",centenas[p] clipped END IF IF unidades_mi > 0 and unidades_mi < 19 THEN LET m = unidades_mi LET valor_letras = valor_letras clipped, " ",unidades1[m] clipped END IF END IF IF unidad > 0 and unidad < 20 AND consegui = "N" THEN LET d = unidad LET valor_letras = valor_letras clipped," ",unidades1[d] clipped END IF IF unidad >= 20 AND d <= 81 AND consegui = "N" THEN LET valor_letras = valor_letras clipped," ",decenas[d] clipped END IF LET valor_letras = valor_letras clipped," ","CON"," ", cheles using "&&", "/100" END FUNCTION FUNCTION letras() LET unidades1[1] = "UNO" LET unidades1[2] = "DOS" LET unidades1[3] = "TRES" LET unidades1[4] = "CUATRO" LET unidades1[5] = "CINCO" LET unidades1[6] = "SEIS" LET unidades1[7] = "SIETE" LET unidades1[8] = "OCHO" LET unidades1[9] = "NUEVE" LET unidades1[10] = "DIEZ" LET unidades1[11] = "ONCE" LET unidades1[12] = "DOCE" LET unidades1[13] = "TRECE" LET unidades1[14] = "CATORCE" LET unidades1[15] = "QUINCE" LET unidades1[16] = "DIESISEIS" LET unidades1[17] = "DIESISIETE" LET unidades1[18] = "DIESIOCHO" LET unidades1[19] = "DIESINUEVE" LET decenas[1] = "VEINTE" LET decenas[2] = "VEINTE Y UNO" LET decenas[3] = "VEINTE Y DOS" LET decenas[4] = "VEINTE Y TRES" LET decenas[5] = "VEINTE Y CUATRO" LET decenas[6] = "VEINTE Y CINCO" LET decenas[7] = "VEINTE Y SEIS" LET decenas[8] = "VEINTE Y SIETE" LET decenas[9] = "VEINTE Y OCHO" LET decenas[10] = "VEINTE Y NUEVE" LET decenas[11] = "TREINTA" LET decenas[12] = "TREINTA Y UNO" LET decenas[13] = "TREINTA Y DOS" LET decenas[14] = "TREINTA Y TRES" LET decenas[15] = "TREINTA Y CUATRO" LET decenas[16] = "TREINTA Y CINCO" LET decenas[17] = "TREINTA Y SEIS" LET decenas[18] = "TREINTA Y SIETE" LET decenas[19] = "TREINTA Y OCHO" LET decenas[20] = "TREINTA Y NUEVE" LET decenas[21] = "CUARENTA" LET decenas[22] = "CUARENTA Y UNO" LET decenas[23] = "CUARENTA Y DOS" LET decenas[24] = "CUARENTA Y TRES" LET decenas[25] = "CUARENTA Y CUATRO" LET decenas[26] = "CUARENTA Y CINCO" LET decenas[27] = "CUARENTA Y SEIS" LET decenas[28] = "CUARENTA Y SIETE" LET decenas[29] = "CUARENTA Y OCHO" LET decenas[30] = "CUARENTA Y NUEVE" LET decenas[31] = "CINCUENTA" LET decenas[32] = "CINCUENTA Y UNO" LET decenas[33] = "CINCUENTA Y DOS" LET decenas[34] = "CINCUENTA Y TRES" LET decenas[35] = "CINCUENTA Y CUATRO" LET decenas[36] = "CINCUENTA Y CINCO" LET decenas[37] = "CINCUENTA Y SEIS" LET decenas[38] = "CINCUENTA Y SIETE" LET decenas[39] = "CINCUENTA Y OCHO" LET decenas[40] = "CINCUENTA Y NUEVE" LET decenas[41] = "SESENTA" LET decenas[42] = "SESENTA Y UNO" LET decenas[43] = "SESENTA Y DOS" LET decenas[44] = "SESENTA Y TRES" LET decenas[45] = "SESENTA Y CUATRO" LET decenas[46] = "SESENTA Y CINCO" LET decenas[47] = "SESENTA Y SEIS" LET decenas[48] = "SESENTA Y SIETE" LET decenas[49] = "SESENTA Y OCHO" LET decenas[50] = "SESENTA Y NUEVE" LET decenas[51] = "SETENTA" LET decenas[52] = "SETENTA Y UNO" LET decenas[53] = "SETENTA Y DOS" LET decenas[54] = "SETENTA Y TRES" LET decenas[55] = "SETENTA Y CUATRO" LET decenas[56] = "SETENTA Y CINCO" LET decenas[57] = "SETENTA Y SEIS" LET decenas[58] = "SETENTA Y SIETE" LET decenas[59] = "SETENTA Y OCHO" LET decenas[60] = "SETENTA Y NUEVE" LET decenas[61] = "OCHENTA" LET decenas[62] = "OCHENTA Y UNO" LET decenas[63] = "OCHENTA Y DOS" LET decenas[64] = "OCHENTA Y TRES" LET decenas[65] = "OCHENTA Y CUATRO" LET decenas[66] = "OCHENTA Y CINCO" LET decenas[67] = "OCHENTA Y SEIS" LET decenas[68] = "OCHENTA Y SIETE" LET decenas[69] = "OCHENTA Y OCHO" LET decenas[70] = "OCHENTA Y NUEVE" LET decenas[71] = "NOVENTA" LET decenas[72] = "NOVENTA Y UNO" LET decenas[73] = "NOVENTA Y DOS" LET decenas[74] = "NOVENTA Y TRES" LET decenas[75] = "NOVENTA Y CUATRO" LET decenas[76] = "NOVENTA Y CINCO" LET decenas[77] = "NOVENTA Y SEIS" LET decenas[78] = "NOVENTA Y SIETE" LET decenas[79] = "NOVENTA Y OCHO" LET decenas[80] = "NOVENTA Y NUEVE" LET decenas[81] = "CIEN" LET centenas[1] = "CIENTO" LET centenas[2] = "DOCIENTOS" LET centenas[3] = "TRESCIENTOS" LET centenas[4] = "CUATROCIENTOS" LET centenas[5] = "QUINIENTOS" LET centenas[6] = "SEISCIENTOS" LET centenas[7] = "SETECIENTOS" LET centenas[8] = "OCHOCIENTOS" LET centenas[9] = "NOVECIENTOS" END FUNCTION FUNCTION after_all() # Calculo del sub-total de la factura LET fact_gral.itbi = 0 LET fact_gral.sub_total = 0 LET fact_gral.total_fact = 0 LET fact_gral.desc_valor = 0 FOR idx = 1 to t_arr IF fact_det[idx].cantidad IS NOT NULL THEN LET fact_gral.sub_total = fact_gral.sub_total + (fact_det[idx].cantidad * fact_det[idx].precio) END IF END FOR DISPLAY BY NAME fact_gral.sub_total FOR idx = 1 to arr_count() IF fact_det[idx].cantidad IS NOT NULL THEN LET fact_det[idx].monto_fact = fact_det[idx].cantidad * fact_det[idx].precio IF fact_det[idx].cantidad_2 > 0 THEN #-> calcula el valor en descuento para cada articulo vg LET valor_desc = 0 LET valor_desc = fact_det[idx].monto_fact * (fact_det[idx].cantidad_2 / 100) LET fact_gral.desc_valor = fact_gral.desc_valor + valor_desc LET fact_det[idx].monto_fact = fact_det[idx].monto_fact - valor_desc END IF END IF END FOR DISPLAY BY NAME fact_gral.desc_valor # Calcula el porciento de ITBIS de la factura dependiendo del porciento # especificado por el usuario DISPLAY "CH ITBIS ",ch_itbi," porc itbis ",fact_gral.porc_itbi IF ch_itbi = 'N' THEN LET fact_gral.porc_itbi=0 END IF IF fact_gral.porc_itbi IS NOT NULL THEN LET fact_gral.itbi=((fact_gral.sub_total - fact_gral.desc_valor)* fact_gral.porc_itbi/100) #- LET fact_gral.itbi=(fact_gral.sub_total * fact_gral.porc_itbi/100) ELSE LET fact_gral.itbi=0 END IF LET itbi = fact_gral.itbi using "###,###,###.##" DISPLAY BY NAME fact_gral.itbi ATTRIBUTE (BOLD) # Calculo total de la factura LET fact_gral.total_fact = (fact_gral.sub_total - fact_gral.desc_valor)+ fact_gral.itbi DISPLAY BY NAME fact_gral.total_fact,fact_gral.porc_itbi ATTRIBUTE (BOLD) END FUNCTION FUNCTION veprmf001() DEFINE tot_porc dec(8,2), cod_fact,mes_chequeo SMALLINT SET CONNECTION "MSSQL_E" INPUT BY NAME salida CONSTRUCT criterio ON a.factura,a.fecha_factura,a.tipo_cliente,a.sec_cliente,a.orden, a.cod_vend,a.conduce FROM factura,fecha_factura,tipo_cliente,sec_cliente,orden,factura_e, conduce IF INT_FLAG THEN LET INT_FLAG = FALSE CALL msg(2) RETURN END IF LET selec = "SELECT a.cod_cia,a.ventas,a.zona,a.factura,CONVERT(CHAR(10),a.fecha_factura,103), ", " a.tipo_cliente,a.sec_cliente,d.nombre,A.PRIMA_US,A.PORC_DESC,a.cond_pago,", " a.orden,CONVERT(CHAR(10),a.fecha_orden,103),a.conduce,CONVERT(CHAR(10),a.fecha_conduce,103),a.porc_itbi,a.cod_vend, ", " a.sec_vend,RTRIM(f.nom1_emp)+' '+RTRIM(f.apell1_Emp),a.sub_total,a.monto_desc, ", " a.monto_itbi,a.neto,c.codigo_dgii,c.NCF,' ',d.cod_provincia,a.cod_vend, ", " g.tipo_ncf,h.sucnombre,h.sucid,a.documento,CONVERT(CHAR(10),g.fecha_vencimiento,103), d.telefono,d.telex,a.factura_c,a.observaciones ", "FROM vetb00002 a LEFT OUTER JOIN vetb00072 c ON c.documento = a.factura AND c.tipo_Doc = 'FT' and a.sucid = c.sucid LEFT OUTER JOIN vetb00071 g ON g.codigo_dgii = c.codigo_dgii, vetb00004 d,adtb00003 f,sucursales h where ",criterio clipped, " AND ", " a.tipo_cliente = d.tipo_cliente and a.sec_cliente = d.sec_cliente ", " and a.sec_vend = f.num_emp and ", " a.sucid = h.sucid ", " ORDER BY a.cod_cia,a.factura" PREPARE comando FROM selec DECLARE consulta SCROLL CURSOR FOR comando OPEN consulta FETCH FIRST consulta INTO cons_fact.cod_cia,cons_fact.ventas,cons_fact.zona,cons_fact.factura,cons_fact.fecha_factura, cons_fact.tipo_cliente,cons_fact.sec_cliente,cons_fact.nombre,cons_fact.prima_us, cons_fact.porc_desc, cons_fact.cond_pago,cons_fact.orden,cons_fact.fecha_orden,cons_fact.conduce,cons_fact.fecha_conduce, cons_fact.porc_itbi,cons_fact.cod_vend,cons_fact.sec_vend,cons_fact.nombre_vend, cons_Fact.sub_total,cons_fact.desc_valor,cons_fact.itbi,cons_fact.total_fact, codigodgii,kncf,pubicacion,codigo_provincia,pconduce,descripcion,p_companias.nombre, localidad,documento_ref,fecha_vencimiento,cliente_bas.telefono,cliente_bas.telex,pconduce, observacion IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF CALL info() LET pcondicion = ui.ComboBox.forName("formonly.cond_pago") CALL ccondicion() DISPLAY descripcion TO descripcion_ncf DISPLAY pubicacion TO sucnombre DISPLAY BY NAME cons_fact.cod_cia,cons_fact.ventas,cons_fact.zona,cons_fact.fecha_factura, cons_fact.tipo_cliente,cons_fact.sec_cliente,cons_fact.prima_us, cons_fact.porc_desc,cons_fact.cond_pago,cons_fact.orden,cons_fact.fecha_orden, cons_fact.fecha_conduce,cons_fact.fecha_embarque,cons_fact.sub_total, cons_fact.itbi,cons_fact.nombre_vend,cons_fact.porc_itbi,cons_fact.total_fact, cons_fact.desc_valor,cons_fact.conduce,cons_fact.nombre, codigodgii,kncf,cons_fact.sec_vend,pconduce,cons_fact.factura,documento_ref,fecha_vencimiento, pconduce,observacion MENU "NAVEGACION:" COMMAND "Siguiente" FETCH NEXT consulta INTO cons_fact.cod_cia,cons_fact.ventas,cons_fact.zona,cons_fact.factura,cons_fact.fecha_factura, cons_fact.tipo_cliente,cons_fact.sec_cliente,cons_fact.nombre,cons_fact.prima_us,cons_fact.porc_desc, cons_fact.cond_pago,cons_fact.orden,cons_fact.fecha_orden,cons_fact.conduce,cons_fact.fecha_conduce, cons_fact.porc_itbi,cons_fact.cod_vend,cons_fact.sec_vend,cons_fact.nombre_vend, cons_Fact.sub_total,cons_fact.desc_valor,cons_fact.itbi,cons_fact.total_fact, codigodgii,kncf,pubicacion,codigo_provincia,pconduce,descripcion,p_companias.nombre, localidad,documento_ref,fecha_vencimiento,cliente_bas.telefono,cliente_bas.telex,pconduce, observacion IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF DISPLAY descripcion TO descripcion_ncf LET pcondicion = ui.ComboBox.forName("formonly.cond_pago") CALL ccondicion() CALL info() DISPLAY BY NAME cons_fact.cod_cia,cons_fact.ventas,cons_fact.zona,cons_fact.fecha_factura, cons_fact.tipo_cliente,cons_fact.sec_cliente,cons_fact.prima_us, cons_fact.porc_desc,cons_fact.cond_pago,cons_fact.orden,cons_fact.fecha_orden, cons_fact.fecha_conduce,cons_fact.fecha_embarque,cons_fact.sub_total, cons_fact.itbi,cons_fact.nombre_vend,cons_fact.porc_itbi,cons_fact.total_fact, cons_fact.desc_valor,cons_fact.conduce,cons_fact.nombre, codigodgii,kncf,cons_fact.sec_vend,pconduce,cons_fact.factura,documento_ref,fecha_vencimiento, pconduce,observacion DISPLAY p_companias.nombre TO sucnombre COMMAND "Anterior" FETCH PREVIOUS consulta INTO cons_fact.cod_cia,cons_fact.ventas,cons_fact.zona,cons_fact.factura,cons_fact.fecha_factura, cons_fact.tipo_cliente,cons_fact.sec_cliente,cons_fact.nombre,cons_fact.prima_us,cons_fact.porc_desc, cons_fact.cond_pago,cons_fact.orden,cons_fact.fecha_orden,cons_fact.conduce,cons_fact.fecha_conduce, cons_fact.porc_itbi,cons_fact.cod_vend,cons_fact.sec_vend,cons_fact.nombre_vend, cons_Fact.sub_total,cons_fact.desc_valor,cons_fact.itbi,cons_fact.total_fact, codigodgii,kncf,pubicacion,codigo_provincia,pconduce,descripcion,p_companias.nombre, localidad,documento_ref,fecha_vencimiento,cliente_bas.telefono,cliente_bas.telex,pconduce ,observacion IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF DISPLAY descripcion TO descripcion_ncf LET pcondicion = ui.ComboBox.forName("formonly.cond_pago") CALL ccondicion() CALL info() DISPLAY BY NAME cons_fact.cod_cia,cons_fact.ventas,cons_fact.zona,cons_fact.fecha_factura, cons_fact.tipo_cliente,cons_fact.sec_cliente,cons_fact.prima_us, cons_fact.porc_desc,cons_fact.cond_pago,cons_fact.orden,cons_fact.fecha_orden, cons_fact.fecha_conduce,cons_fact.fecha_embarque,cons_fact.sub_total, cons_fact.itbi,cons_fact.nombre_vend,cons_fact.porc_itbi,cons_fact.total_fact, cons_fact.desc_valor,cons_fact.conduce,cons_fact.nombre, codigodgii,kncf,cons_fact.sec_vend,pconduce,cons_fact.factura,documento_ref,fecha_vencimiento, pconduce,observacion DISPLAY p_companias.nombre TO sucnombre COMMAND "Primero" FETCH FIRST consulta INTO cons_fact.cod_cia,cons_fact.ventas,cons_fact.zona,cons_fact.factura,cons_fact.fecha_factura, cons_fact.tipo_cliente,cons_fact.sec_cliente,cons_fact.nombre,cons_fact.prima_us,cons_fact.porc_desc, cons_fact.cond_pago,cons_fact.orden,cons_fact.fecha_orden,cons_fact.conduce,cons_fact.fecha_conduce, cons_fact.porc_itbi,cons_fact.cod_vend,cons_fact.sec_vend,cons_fact.nombre_vend, cons_Fact.sub_total,cons_fact.desc_valor,cons_fact.itbi,cons_fact.total_fact, codigodgii,kncf,pubicacion,codigo_provincia,pconduce,descripcion,p_companias.nombre, localidad,documento_ref,fecha_vencimiento,cliente_bas.telefono,cliente_bas.telex, pconduce,observacion IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF DISPLAY descripcion TO descripcion_ncf LET pcondicion = ui.ComboBox.forName("formonly.cond_pago") CALL ccondicion() CALL info() DISPLAY BY NAME cons_fact.cod_cia,cons_fact.ventas,cons_fact.zona,cons_fact.fecha_factura, cons_fact.tipo_cliente,cons_fact.sec_cliente,cons_fact.prima_us, cons_fact.porc_desc,cons_fact.cond_pago,cons_fact.orden,cons_fact.fecha_orden, cons_fact.fecha_conduce,cons_fact.fecha_embarque,cons_fact.sub_total, cons_fact.itbi,cons_fact.nombre_vend,cons_fact.porc_itbi,cons_fact.total_fact, cons_fact.desc_valor,cons_fact.conduce,cons_fact.nombre, codigodgii,kncf,cons_fact.sec_vend,pconduce,cons_fact.factura,documento_ref,fecha_vencimiento, pconduce,observacion DISPLAY p_companias.nombre TO sucnombre COMMAND "Ultimo" FETCH LAST consulta INTO cons_fact.cod_cia,cons_fact.ventas,cons_fact.zona,cons_fact.factura,cons_fact.fecha_factura, cons_fact.tipo_cliente,cons_fact.sec_cliente,cons_fact.nombre,cons_fact.prima_us,cons_fact.porc_desc, cons_fact.cond_pago,cons_fact.orden,cons_fact.fecha_orden,cons_fact.conduce,cons_fact.fecha_conduce, cons_fact.porc_itbi,cons_fact.cod_vend,cons_fact.sec_vend,cons_fact.nombre_vend, cons_Fact.sub_total,cons_fact.desc_valor,cons_fact.itbi,cons_fact.total_fact, codigodgii,kncf,pubicacion,codigo_provincia,pconduce,descripcion,p_companias.nombre, localidad,documento_ref,fecha_vencimiento,cliente_bas.telefono,cliente_bas.telex, pconduce,observacion IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF DISPLAY descripcion TO descripcion_ncf LET pcondicion = ui.ComboBox.forName("formonly.cond_pago") CALL ccondicion() CALL info() DISPLAY BY NAME cons_fact.cod_cia,cons_fact.ventas,cons_fact.zona,cons_fact.fecha_factura, cons_fact.tipo_cliente,cons_fact.sec_cliente,cons_fact.prima_us, cons_fact.porc_desc,cons_fact.cond_pago,cons_fact.orden,cons_fact.fecha_orden, cons_fact.fecha_conduce,cons_fact.fecha_embarque,cons_fact.sub_total, cons_fact.itbi,cons_fact.nombre_vend,cons_fact.porc_itbi,cons_fact.total_fact, cons_fact.desc_valor,cons_fact.conduce,cons_fact.nombre, codigodgii,kncf,cons_fact.sec_vend,pconduce,cons_fact.factura,documento_ref,fecha_vencimiento, pconduce,observacion DISPLAY p_companias.nombre TO sucnombre # COMMAND "Recibo" # CALL veprfu001() COMMAND "ITEMS" LET xconduce_almacen = NULL LET descripcion_bodega =null LET selec = "SELECT a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,a.descripcion,b.unidad_med, ", " a.cantidad,a.precio,a.cantidad_2,(a.cantidad*a.precio)*(a.cantidad_2/100), ", " (a.cantidad*a.precio) -(a.cantidad*a.precio)*(a.cantidad_2/100),'0','0',a.id_kit ", " FROM vetb00003 a LEFT OUTER JOIN iptb00002 b ON ", " 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 ", " WHERE a.factura = ? AND ", " a.sucid = ",localidad PREPARE cmdfact FROM selec DECLARE busca_items CURSOR FOR cmdfact OPEN busca_items USING cons_fact.factura CALL fact_det.clear() LET idx = 1 FOREACH busca_items INTO fact_Det[idx].* LET valor_Desc = (fact_det[idx].cantidad * fact_det[idx].precio) * (fact_Det[idx].cantidad_2 / 100) IF valor_desc IS NULL THEN LET valor_desc = 0 END IF IF fact_det[idx].descrip_esp IS NULL THEN SELECT a.descrip_esp INTO fact_det[idx].descrip_esp FROM iptb00002 a WHERE a.cod_n = fact_det[idx].cod_n AND a.cod_grupo = fact_det[idx].cod_grupo AND a.cod_tipo = fact_det[idx].cod_tipo AND a.cod_sec = fact_det[idx].cod_sec END IF LET fact_det[idx].monto_fact = (fact_Det[idx].precio * fact_det[idx].cantidad)- valor_desc LET cod_fact = 1 LET p_bonifica[idx] = 0 LET idx = idx + 1 END FOREACH CALL set_count(idx-1) DISPLAY ARRAY fact_det TO s_fact.* AFTER DISPLAY IF INT_FLAG THEN LET INT_FLAG = FALSE RETURN END IF EXIT DISPLAY END DISPLAY IF pconduce IS NOT NULL THEN CALL conduces() SET CONNECTION "MSSQL_E" END IF SELECT a.sucid,b.sucnombre,b.direccion,c.nombre_provincia,b.telefono,b.fax,b.rnc,a.cod_perfil INTO localidad,sucnombre,direccion_sucursal,xnombre_provincia, p_companias.telefono,p_companias.fax,p_companias.rnc,pperfil FROM seg0001 a,sucursales b,vetb00020 c WHERE a.usuario = usuarios AND a.sucid = b.sucid AND b.localidad = c.cod_provincia { IF salida = "MA" THEN 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 imp_fact1 TO archivo FOR idx = 1 TO fact_det.getLength() OUTPUT TO REPORT imp_fact1(fact_gral.*,fact_det[idx].*,tot_porc, p_bonifica[idx],cod_fact,kncf,codigodgii) END FOR FINISH REPORT imp_fact1 RUN imprime } # ELSE LET r_filename ='veprmt022.4rp' LET r_output=salida LET preview = TRUE 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 --run the report IF handler IS NOT NULL THEN -- report engine was configured ok START REPORT imp_factura TO XML HANDLER handler FOR idx = 1 TO fact_det.getLength() IF fact_det[idx].cod_n IS NOT NULL AND fact_det[idx].cod_grupo IS NOT NULL AND fact_det[idx].cod_tipo IS NOT NULL AND fact_det[idx].cod_sec IS NOT NULL AND fact_det[idx].cantidad IS NOT NULL AND fact_det[idx].cantidad > 0 THEN LET cod_fact = 1 OUTPUT TO REPORT imp_factura(fact_gral.*,fact_det[idx].*,tot_porc, p_bonifica[idx],cod_fact,kncf,codigodgii) END IF END FOR FINISH REPORT imp_factura END IF # END IF ON ACTION anular CALL prd(fact_gral.fecha_factura,usuarios) RETURNING bandera IF bandera = 1 THEN CONTINUE MENU END IF CALL seg000(usuarios,pperfil,'anular.veprmt022') RETURNING accesso IF accesso = "SI" THEN LET opt1 = fgl_winquestion("ANULAR","ESTA SEGURO DE ANULAR ESTA FACTURA?","NO","NO|YES","QUESTION",0) IF opt1 = "YES" THEN LET mes_chequeo = MONTH(TODAY) CALL anular() UPDATE seg0001 SET ultimo_programa_ejecutado = 'anular.veprmt022', fecha_ultimo_login = getdate() WHERE usuario = usuarios END IF ELSE CALL fgl_winmessage("INFO","USTED NO TIENE PERMISOS PARA UTILIZAR ESTA OPCION","INFO") CONTINUE MENU END IF COMMAND "Retornar" CLEAR FORM EXIT MENU END MENU END FUNCTION FUNCTION info() DEFINE bdireccion STRING LET estatus = NULL SELECT UNIQUE status_t,status_impresion INTO estatus,p_impresion FROM vetb00002 WHERE factura = cons_fact.factura AND sucid = localidad IF estatus = "E" THEN LET estado.nula = "NULA" ELSE LET estado.nula = "ACTIVA" END IF IF p_impresion = "S" THEN LET estado.impresa = "Impresa" ELSE LET estado.impresa = "N Impre" END IF IF cons_fact.ventas = 1 THEN LET cons_fact.nombre_tipo = "L O C A L" END IF IF cons_fact.ventas = 2 THEN LET cons_fact.nombre_tipo = "EXPORTACION" END IF LET purbanizacion = NULL { SE COLOCO EN COMENTARIO LA DIRECCION DEL CLIENTE PORQUE SE ESTA BUSCANDO DE LA COTIZACION EN FECHA 27-08-2021 SELECT b.calle,b.casa_num,b.urbanizacion,b.barrio INTO descrip1,descrip2,purbanizacion,descrip3 FROM vetb00005 b WHERE b.tipo_cliente = cons_fact.tipo_cliente AND b.sec_cliente = cons_fact.sec_cliente LET fact_gral.direccion = descrip1 clipped,descrip2 clipped,", ", descrip3 CLIPPED,purbanizacion } LET bdireccion = "SELECT ISNULL(a.direccion_cliente,'NO TIENE') FROM marmotech.dbo.vetb00050 a WHERE a.cotizacion_no = ? " PREPARE cdireccion FROM bdireccion EXECUTE cdireccion INTO fact_gral.direccion USING cons_fact.conduce SELECT d.nombre_provincia INTO cons_fact.ciudad FROM vetb00020 d WHERE d.cod_provincia = codigo_provincia LET fact_gral.direccion = fact_gral.direccion CLIPPED," ",cons_fact.ciudad DISPLAY BY NAME fact_gral.direccion,cons_fact.ciudad DISPLAY BY NAME estado.* ATTRIBUTE(REVERSE,blue) SELECT a.descrip INTO condicion.descrip FROM vetb00012 a WHERE a.cond_pago = cons_fact.cond_pago LET fact_gral.factura = cons_fact.factura LET fact_gral.cod_cia = cons_fact.cod_cia LET fact_gral.ventas = cons_fact.ventas LET fact_gral.zona = cons_fact.zona LET fact_gral.fecha_factura = cons_fact.fecha_factura LET fact_Gral.tipo_cliente= cons_fact.tipo_cliente LET fact_gral.sec_cliente= cons_fact.sec_cliente LET fact_gral.prima_us = cons_fact.prima_us LET fact_gral.porc_desc = cons_fact.porc_desc LET fact_gral.cond_pago= cons_fact.cond_pago LET fact_gral.orden= cons_fact.orden LET fact_gral.fecha_orden= cons_fact.fecha_orden LET fact_gral.fecha_conduce=cons_fact.fecha_conduce LET fact_gral.fecha_embarque= cons_fact.fecha_embarque LET fact_gral.sub_total= cons_fact.sub_total LET fact_gral.itbi= cons_fact.itbi LET fact_gral.nombre_Vend= cons_fact.nombre_vend LET fact_gral.porc_itbi= cons_fact.porc_itbi LET fact_gral.total_fact= cons_fact.total_fact LET fact_gral.desc_valor= cons_fact.desc_valor LET fact_gral.conduce= cons_fact.conduce LET fact_gral.nombre =cons_fact.nombre LET fact_gral.sec_vend = cons_fact.sec_vend LET fact_gral.nombre_vend = cons_fact.nombre_vend END FUNCTION REPORT volante(p_tipo_cliente,p_sec_cliente,p_fecha_orig, p_num_doc,p_cod_emp_sec,p_tipo_doc, p_cuenta_no,p_banco,p_aplica_a, p_monto_desc,p_valor,p_nombre, p_nomb_emp,p_nombre_cta,p_comentario) DEFINE p_tipo_cliente LIKE cctb00001.tipo_cliente, p_sec_cliente LIKE cctb00001.sec_cliente, p_fecha_orig LIKE cctb00001.fecha_orig, p_num_doc LIKE cctb00001.num_doc, p_cod_emp_sec LIKE cctb00001.cod_emp_sec, p_tipo_doc LIKE cctb00001.tipo_doc, p_cuenta_no LIKE cctb00001.cuenta_no, p_banco LIKE cctb00001.banco, p_aplica_a LIKE cctb00001.aplica_a, p_monto_desc LIKE cctb00001.monto_desc, p_valor LIKE cctb00001.valor, p_nomb_emp CHAR(40), p_nombre_cta CHAR(30), p_cod_cia LIKE cctb00001.cod_cia, pitbis DEC(12,2) define hora char(5), l smallint, p_nombre LIKE vetb00004.nombre, p_comentario CHAR(120) #LIKE cctb00011.comentario DEFINE negrillas_on CHAR(2) DEFINE negrillas_off CHAR(2) DEFINE normal CHAR(2), ditbis DEC(12,2), p_nombre_tipo VARCHAR(30) output top margin 0 bottom margin 5 left margin 0 ORDER BY p_sec_cliente,p_num_doc format page header LET hora = time SELECT a.* INTO p_companias.* FROM companias a LET lj = (110 - LENGTH(p_companias.nombre CLIPPED))/2 LET p_nombre_tipo= "INGRESOS CXC" print column 2, "ccprmt001", column 15, negrillas_on, column lj, p_companias.nombre, column 65, negrillas_off, column 90, "Pag. ", pageno using "###" print column lj, "RNC: ",p_companias.rnc LET lj = (110 - LENGTH(p_companias.direccion CLIPPED))/2 print column 1, negrillas_on, column lj, p_companias.direccion," ",xnombre_provincia, column 65, negrillas_off, column 90, today using "dd/mm/yyyy" LET lj = (110 - LENGTH(p_nombre_tipo))/2 print column 1, negrillas_on, column lj, p_nombre_tipo CLIPPED, column 65, negrillas_off, column 93, hora SKIP 3 LINES BEFORE GROUP OF p_sec_cliente SELECT a.itbi INTO pitbis FROM vetb00019 a WHERE a.disponible = "S" AND status_t IS null IF pitbis IS NULL THEN LET pitbis = 0 END IF PRINT COLUMN 5, "LOCALIDAD :",sucnombre PRINT COLUMN 5, " NUMERO DOCUM. : ", p_num_doc using "########" PRINT COLUMN 5, " CUENTA : ",p_cuenta_no CLIPPED," - ",p_nombre_cta CLIPPED, COLUMN 70," DEPOSITO : ", p_banco PRINT COLUMN 5, " CLIENTE : ",p_tipo_cliente,"-",p_sec_cliente USING "<<<<<"," - ", p_nombre CLIPPED, COLUMN 70," FECHA : ",p_fecha_orig USING "dd/mm/yyyy" PRINT COLUMN 5, " VENDEDOR : ",fact_gral.sec_vend USING "&&&&","-",p_nomb_emp CLIPPED PRINT COLUMN 5, " TIPO PAGO : ",p_tipo_doc CLIPPED," - ",p_nombre_tipo CLIPPED #PRINT doce PRINT p_cod_cia USING "<<<<" print column 1, "===============================================================", "================================" print column 5, "Aplica Factura ", column 23, " Descuento", column 37, " Valor ", column 54, " ITBIS", column 70, " TOTAL" print column 37, " S/ITBIS" print column 1, "===============================================================", "================================" SKIP 1 LINE on every ROW print column 5, p_aplica_a USING "#######", column 23, p_monto_desc USING "#,###,###.##", column 37, p_valor USING "##,###,###.##", column 54, ditbis USING "##,###,###.##", column 70, p_valor + ditbis USING "###,###,###.##" let l = 12 AFTER GROUP OF p_sec_cliente SKIP 1 LINE PRINT COLUMN 5, "Total----> ", COLUMN 23, GROUP SUM(p_monto_desc) USING "#,###,###.##", COLUMN 37, GROUP SUM(p_valor) USING "##,###,###.##" on last row SKIP 2 LINES PRINT COLUMN 2, "COMENTARIOS : " PRINT COLUMN 5, p_comentario[1,60] CLIPPED PRINT COLUMN 5, p_comentario[61,120] CLIPPED PAGE TRAILER SKIP 1 LINE PRINT COLUMN 10, "_________________________________________", COLUMN 60, "_________________________________________" PRINT COLUMN 10, " Preparado Por ", COLUMN 60, " Autorizado Por " print normal END REPORT FUNCTION conduces() # SET CONNECTION "MSSQL_C" LET xconduce_almacen = null # SELECT a.tipo_cliente,a.sec_cliente,b.nombre,c.calle||' '||c.casa_num||' '||c.urbanizacion||' '||c.barrio, SELECT a.tipo_cliente,a.sec_cliente,b.nombre,c.direccion_cliente, d.cotizacion_no,a.orden,a.documento,a.conduce,c.rnc, a.bodega INTO fact_gral.tipo_cliente,fact_gral.sec_cliente,fact_gral.nombre,fact_gral.direccion, fact_gral.conduce,fact_gral.orden,documento_ref,xconduce_almacen,num_rnc,fact_gral.bodega FROM vetb00002 a,vetb00004 b, prtb00012 d,OUTER vetb00050 c WHERE a.factura = pconduce AND a.tipo_cliente = b.tipo_cliente AND a.sec_cliente = b.sec_cliente AND a.tipo_cliente = c.tipo_cliente AND a.sec_cliente = c.sec_cliente AND a.cotizacion_no = c.cotizacion_no AND a.orden = d.num_oc AND a.status_t IS NULL # DESCRIPCION BODEGA LET descripcion_bodega =null SELECT a.descripcion INTO descripcion_bodega FROM intb00009 a WHERE cod_bodega = fact_gral.bodega END FUNCTION