{ -------------------------------------------------------------------------- PROGRAMA : VEPRMT001 OBJETIVO : Este programa captura la factura comercial REALIZADO POR : Ing. Juan Fco. Soto. FECHA : Enero 12,1993. -------------------------------------------------------------------------- } IMPORT util GLOBALS "veprgb000.4gl" DEFINE mes_chequeo SMALLINT, tmpdireccion CHAR(80) DEFINE porce,valor_desc,cant_prod,cant_vend,itbis_o,xporciento,credito DECIMAL (18,2), cantidadParaCalcular DEC(12,5) DEFINE codigo_provincia,t_arr, pubicacion VARCHAR(100), aplaca_transp,proforma VARCHAR(20), documento_ref,accesso CHAR(15), execede,exito1,exito2,ofertas BOOLEAN, porcentaje_n DEC(8,2), fpago,xsecvend,factura_old,factura_xc,cuenta_precio,xncf_final INT, impresion1,cliente_ncf,pcontroloutlet,pcontroloutlet2 CHAR(2), xtipocta CHAR(2), cuenta_cliente VARCHAR(28), estadoFactura,pdocumento_ref VARCHAR(25), num_rnc VARCHAR(11), emailcliente VARCHAR(100), pperfil SMALLINT, fcrea,ccrea,fechafirma DATETIME YEAR TO SECOND, pmoneda VARCHAR(2), respuesta,xrespuesta STRING, phash,xhash,tipodocumento VARCHAR(10), xtrack RECORD trackid,ERROR,mensaje STRING END RECORD, att dynamic array of record col1 string, col2 STRING END RECORD,ch_itbi VARCHAR(1), id_provincia_dgii,id_municipio_dgii VARCHAR(20), ditbis DYNAMIC ARRAY OF DEC(12,2) DEFINE documento_encabezado RECORD tipoEcf,eNcf,indicadorMontoGravado,tipoPago,fechaLimitePago,FormadePAgo,montoPago,FechaVencimientoSecuencia, rncEmisor,razonSocialEmisor,direccionEmisor,Municipio,Provincia,telefonoEmisor, correoEmisor,webSite,codigoVendedor,numeroFacturaInterna,numeroPedidoInterno, fechaEmision,rncComprador,razonSocialComprador,montoGravadoTotal,montoGravadoI1, montoGravadoI2,montoGravadoI3,montoExento,itbis1,itbis2,itbis3,totalItbis,totalItbis1, totalItbis2,totalItbis3,montoTotal,tipoIngreso,terminoPago,TipoCuentaPago,NumeroCuentaPago,IdentificadorExtranjero, contactoComprador,CorreoComprador,DireccionComprador,MunicipioComprador,ProvinciaComprador,FechaEntrega,FechaOrdenCompra, NumeroOrdenCompra,CodigoInternoComprador, nombreFile,IndicadorNotaCredito,NCFmodificado,codigoModificacion,fechaNCFmodificado STRING END RECORD DEFINE pagos RECORD documento LIKE vetb00002.factura, fecha_factura DATE, factura LIKE vetb00002.factura, tipo_cliente INT, sec_cliente INT, nombre VARCHAR(100), direccion VARCHAR(100), ciudad VARCHAR(100), cheque_no LIKE cctb00001.num_cheque, banco LIKE cctb00001.banco, valor_cheque DECIMAL(12,2), valor_efectivo DECIMAL (12,2), monto_cr DEC(12,2), valor_total DEC(12,2) END RECORD DEFINE prtb09 RECORD LIKE prtb00009.* DEFINE lleva_parcial,ch_servicios,carpa,ch_encabeza CHAR(1), pcotizacion,cuenta_arr,xdocumento_almacen,otro_num_recibo,documento_oferta INTEGER, observacion CHAR(180) , obs1,obs2,obs3 CHAR(50),obs4 CHAR(30), descripcion_doc VARCHAR(100), genera_ncf CHAR(3), xdireccion_proyecto VARCHAR(100), exito BOOLEAN, pcodcia SMALLINT, pprecio DYNAMIC ARRAY OF DECIMAL(12,2), xsec_vend INT, valor_control_ncf,valor_desc_moneda DEC(12,2) { DEFINE p1 RECORD codigo,estado,mensajes,encf,secuenciaUtilizada STRING END RECORD } # {"codigo":2,"estado":"Rechazado","mensajes":[{"codigo":"03","valor":"\n-The 'TipoIngresos' element is invalid - The value '' is invalid according to its datatype 'TipoIngresosType' - The Pattern constraint failed."}],"encf":"E320000000166","secuenciaUtilizada":false} DEFINE p1 RECORD trackId,ERROR,mensaje STRING END RECORD DEFINE p32 RECORD codigo,estado,mensajes,encf,secuenciautilizada STRING END RECORD DEFINE p32err RECORD codigo,estado STRING, mensajes DYNAMIC ARRAY OF RECORD codigo,valor,encf,secuenciautilizada STRING END RECORD END RECORD DEFINE p RECORD trackid STRING, codigo,estado,rnc,encf,secuenciaUtilizada,fechaRecepcion STRING, mensajes DYNAMIC ARRAY of RECORD valor,codigo string END RECORD END RECORD,codigo STRING MAIN DEFER INTERRUPT CALL STARTLOG("veprmt01.txt") CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CALL ARG_VAL(4) RETURNING impresor CALL ARG_VAL(5) RETURNING xcopia CONNECT to "marmotech" AS "IFMX" USER usuarios USING clave CONNECT TO "smarmotech" AS "MSSQL" USER usuarios USING clave SET ISOLATION TO DIRTY READ SELECT a.sucid,b.sucnombre,b.direccion,c.nombre_provincia,b.telefono,b.fax,b.rnc,a.bodega,a.cod_perfil, ISNULL(a.descuento2,0),c.id_dgii,c.id_municipio_dgii INTO localidad,sucnombre,p_companias.direccion,p_companias.direccion1, p_companias.telefono,p_companias.fax,p_companias.rnc,fact_gral.bodega,pperfil, xporciento,id_provincia_dgii,id_municipio_dgii 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("INFO","USUARIO NO TIENE LOCALIDAD ASIGNADA, COMUNIQUESE CON INFORMATICA","INFO") EXIT PROGRAM END IF # VERIFICA SI EL USUARIO TIENE PERMISO A LAS OFERTAS SELECT a.documento INTO documento_oferta FROM seg0010 a,vetb00032 b WHERE a.usuario = usuarios AND a.documento = b.documento AND GETDATE() BETWEEN b.fecha_inicial AND b.fecha_final IF STATUS = NOTFOUND THEN LET ofertas = FALSE ELSE LET ofertas = TRUE END IF OPTIONS FORM LINE 2, ERROR LINE 24, COMMENT LINE 23, PROMPT LINE 22 call ui.Interface.loadStyles("formularios") OPEN FORM vefmmt001 FROM "vefmmt001" DISPLAY FORM vefmmt001 SELECT a.nombre,a.email INTO p_companias.nombre,p_companias.email FROM companias a DISPLAY p_companias.nombre TO compania DISPLAY BY NAME sucnombre MENU ON ACTION nuevo CLEAR FORM CALL veprmt001() ON ACTION buscar CLEAR FORM call veprmf001() ON ACTION anular ATTRIBUTE(TEXT="Anular",IMAGE="garbage") LET mes_chequeo = MONTH(TODAY) SET CONNECTION "MSSQL" CALL seg000(usuarios,pperfil,'anular.veprmt002') RETURNING accesso DISPLAY "usuario ",usuarios," ",pperfil IF accesso = "SI" THEN CALL anular() ELSE CALL msg(503) END IF ON ACTION salir exit menu END MENU END MAIN FUNCTION veprmt001() DEFINE documento_Detalle DYNAMIC ARRAY OF RECORD indicadorFacturacion,nombreItem,indicadorBienoServicio,cantidadItem,precioUnitarioItem, montoItem STRING, DescripcionItem VARCHAR(1000), NumeroLinea int END RECORD DEFINE valor,valor1,t_valor,balance DECIMAL(12,2) DEFINE tipo_fact,p_bonif,ano_act,ano_fe, cod_fact,pcod_transp,psec_transp SMALLINT, ch_balance CHAR(14) DEFINE hoy DATE DEFINE hice,primera CHAR(1), opt1,opt CHAR(7) DEFINE tipo_f CHAR(2) DEFINE tot_porc1,porc_desc,tot_porc DECIMAL(8,3) LET hoy = today DISPLAY hoy using "dd/mm/yyyy" AT 1,68 ATTRIBUTE (blue) # WHENEVER ERROR CONTINUE LABEL exito: INITIALIZE fact_gral.*,primera TO NULL INITIALIZE documento_encabezado.* TO NULL LET pdocumento_ref = NULL LET porc_desc = 0 LET descrip1 = NULL LET descrip2 = NULL LET p_bonif = NULL LET fact_gral.cod_cia = 1 LET ch_fecha = TODAY USING "dd/mm/yyyy" LET fact_gral.fecha_factura = ch_fecha 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 fact_gral.cond_pago = 4 LET fact_gral.porc_itbi = NULL LET fact_gral.prima_us = NULL DISPLAY BY NAME fact_gral.porc_itbi,fact_gral.prima_us,descrip1 LET hice = "S" LET h = 1 LABEL otravez: INITIALIZE detalle TO NULL 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 LET ch_itbi = "N" LET ch_servicios = "N" LET ch_encabeza = "S" LET ch_balance = NULL LET descrip1 = NULL LET factura_e = NULL LET pdocumento_ref =NULL INPUT BY NAME impresion1,ch_itbi,ch_encabeza,ch_servicios,proforma,descripcion_doc,pcontroloutlet,genera_ncf BEFORE INPUT LET proforma="CONDUCE" LET descripcion_doc=NULL LET pcontroloutlet='NO' LET ch_itbi="S" DISPLAY BY NAME ch_itbi SET CONNECTION "MSSQL" SELECT a.controlOutlet,b.num_emp,b.tipo_cliente,b.sec_cliente,a.controloutlet2,b.bodega INTO pcontroloutlet,xsecvend,fact_gral.tipo_cliente,fact_gral.sec_cliente, pcontroloutlet2,fact_gral.bodega FROM seg0003 a,seg0001 b WHERE a.usuario = usuarios AND a.usuario = b.usuario IF pcontroloutlet = 'SI' THEN LET fact_gral.cod_transp = 12 LET fact_gral.sec_transp = 8 LET ch_encabeza = 'N' IF pcontroloutlet2 = 'SI' THEN LET ch_encabeza = 'S' # LET fact_gral.sec_vend = xsecvend CALL buscavend() END IF DISPLAY BY NAME ch_encabeza 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 DISPLAY BY NAME fact_gral.nombre_tran,pcontroloutlet END IF IF pcontroloutlet2="SI" THEN # LET fact_gral.sec_vend = xsecvend # LET codigodgii = '32' CALL buscavend() END IF AFTER INPUT IF INT_FLAG THEN LET opt = FGL_WINQUESTION("PREGUNTA","Desea Salir del Programa?","yes","Yes|no","question",0) IF UPSHIFT(opt) = "YES" THEN LET INT_FLAG = FALSE RETURN END IF END IF IF pcontroloutlet <> "SI" AND pcontroloutlet2='SI' THEN IF ch_itbi IS NULL THEN ERROR "DEBE ESPECIFICAR PARAMETRO ITBIS" CONTINUE INPUT END IF IF ch_encabeza IS NULL THEN ERROR "DEBE ESPECIFICAR PARAMETRO ENCABEZADO" CONTINUE INPUT END IF END IF # IF ch_servicios IS NULL THEN # ERROR "DEBE ESPECIFICAR PARAMETRO SERVICIOS" # CONTINUE INPUT # END IF IF proforma = "PROFORMA" THEN LET genera_ncf = 'NO' DISPLAY BY NAME genera_ncf # IF descripcion_doc IS NULL THEN # NEXT FIELD descripcion_doc # END IF ELSE EXIT INPUT END IF EXIT INPUT END INPUT IF pcontroloutlet2 <> "SI" THEN LET codigodgii = NULL LET descripcion_ncf=NULL END IF LET num_rnc = NULL LET fpago =NULL INPUT BY NAME fact_gral.*,cliente_bas.telefono, codigodgii,factura_e,pdocumento_ref,num_rnc,fpago,xtipocta,cuenta_cliente WITHOUT DEFAULTS ATTRIBUTE (BLUE) ON ACTION buscaconduce ATTRIBUTE(TEXT="Conduces",IMAGE="find") IF pcontroloutlet <> "SI" OR pcontroloutlet2 <>'SI' THEN CALL conduceSinfacturar('06/01/2020') RETURNING fact_gral.conduce,fact_gral.bodega,p_codigo,fact_gral.tipo_cliente,fact_gral.sec_cliente,fact_gral.nombre, fact_gral.ventas,fact_gral.orden CALL datoscliente() DISPLAY BY NAME fact_gral.conduce,fact_gral.bodega,fact_gral.tipo_cliente,fact_gral.sec_cliente,fact_gral.nombre, fact_gral.ventas,fact_gral.orden NEXT FIELD ventas END IF BEFORE INPUT SET CONNECTION "MSSQL" CALL bodegas('1') LET fpago = 8 LET xtipocta = "OT" LET fact_gral.direccion =NULL LET fact_gral.cod_cia = 1 LET compania = p_companias.nombre CLIPPED LET fact_gral.cond_pago = 4 LET fact_gral.ventas = 1 # LET pcondicion = ui.ComboBox.forName("formonly.cond_pago") CALL ccondicion() CALL formaspago() LET pventas = ui.ComboBox.forName("formonly.ventas") CALL cventas() SELECT a.dias,a.descrip,a.codigo_dgii,a.titulo_dgii INTO condicion.dias,condicion.descrip,documento_encabezado.tipoPago FROM vetb00012 a where a.cond_pago = fact_gral.cond_pago DISPLAY BY NAME fact_gral.cod_cia,fact_gral.cond_pago,compania,fact_gral.ventas,fact_gral.tipo_cliente, fact_gral.sec_cliente LET p_fecha_ven = fact_gral.fecha_factura + condicion.dias DISPLAY BY NAME p_fecha_ven ATTRIBUTE(RED) IF pcontroloutlet2 = "SI" THEN LET genera_ncf='YES' SELECT a.sec_vend,RTRIM(b.nom1_emp) +' '+RTRIM(b.apell1_emp) INTO fact_gral.sec_vend,fact_gral.nombre_vend FROM seg0000 a,adtb00003 b WHERE a.usuario = usuarios AND a.sec_vend = b.num_emp DISPLAY BY NAME fact_gral.sec_vend,fact_gral.nombre_vend NEXT FIELD tipo_cliente END IF IF pcontroloutlet2 <> 'SI' THEN SELECT a.cod_zona INTO fact_gral.zona FROM intb00009 a WHERE a.cod_bodega = fact_gral.bodega # LET fact_gral.tipo_cliente=19 # LET fact_gral.sec_cliente=943 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 SELECT unique ISNULL(descrip,'NO TIENE') INTO descrip1 FROM vetb00008 WHERE cod_zona = CAST(fact_gral.zona as SMALLINT) DISPLAY BY NAME fact_gral.nombre,fact_gral.zona,fact_gral.tipo_cliente,fact_gral.sec_cliente, descrip1,fact_gral.bodega,descrip1 LET ch_servicios = 'N' CALL conduceSinfacturar('06/01/2020') RETURNING fact_gral.conduce,fact_gral.bodega,p_codigo,fact_gral.tipo_cliente,fact_gral.sec_cliente,fact_gral.nombre, fact_gral.ventas,fact_gral.orden CALL datoscliente() DISPLAY BY NAME fact_gral.conduce,fact_gral.bodega,fact_gral.tipo_cliente,fact_gral.sec_cliente,fact_gral.nombre, fact_gral.ventas,fact_gral.orden NEXT FIELD ventas END IF AFTER FIELD bodega IF pcontroloutlet = "SI" OR pcontroloutlet2 ='SI' THEN SELECT a.bodega FROM iptb00048 a WHERE a.bodega = fact_gral.bodega AND a.usuario = usuarios IF STATUS = NOTFOUND THEN CALL msg(503) NEXT FIELD bodega END IF SELECT a.cod_zona INTO fact_gral.zona FROM intb00009 a WHERE a.cod_bodega = fact_gral.bodega SELECT unique ISNULL(descrip,'NO TIENE') INTO descrip1 FROM vetb00008 WHERE cod_zona = CAST(fact_gral.zona as SMALLINT) DISPLAY BY NAME fact_gral.zona,descrip1 END IF AFTER FIELD codigodgii IF codigodgii IS NOT NULL THEN SET CONNECTION "IFMX" IF ch_itbi = "S" THEN SELECT UNIQUE a.itbis INTO ch_itbi FROM vetb00071 a WHERE a.tipo_doc = "FT" and a.codigo_dgii = codigodgii AND a.disponible = "S" IF STATUS = NOTFOUND THEN LET numero_msg =391 CALL msg(numero_msg) EXIT PROGRAM 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_itbi SET CONNECTION "MSSQL" { ON KEY (CONTROL-E) CASE WHEN INFIELD(tipo_cliente) CALL veprmt101() LET fact_gral.tipo_cliente = cliente_bas.tipo_cliente LET fact_gral.sec_cliente = cliente_bas.sec_cliente LET fact_gral.nombre = cliente_bas.nombre CLIPPED LET credito = cliente_bas.limite_credito LET codigo_provincia = cliente_bas.cod_provincia DISPLAY BY NAME fact_gral.tipo_cliente,fact_gral.sec_cliente, fact_gral.nombre WHEN INFIELD(sec_cliente) CALL veprmt101() LET fact_gral.tipo_cliente = cliente_bas.tipo_cliente LET fact_gral.sec_cliente = cliente_bas.sec_cliente LET fact_gral.nombre = cliente_bas.nombre CLIPPED LET credito = cliente_bas.limite_credito LET codigo_provincia = cliente_bas.cod_provincia DISPLAY BY NAME fact_gral.tipo_cliente,fact_gral.sec_cliente, fact_gral.nombre END CASE 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 fact_gral.descrip ATTRIBUTE(blue) NEXT FIELD orden WHEN INFIELD(sec_vend) CALL consulta_empleados() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false NEXT FIELD sec_vend END IF LET fact_gral.sec_vend = transportista.sec_transp LET fact_gral.nombre_vend = descrip6 DISPLAY BY NAME fact_gral.sec_vend ATTRIBUTE (blue) DISPLAY BY NAME fact_gral.nombre_vend ATTRIBUTE (blue) WHEN INFIELD(cod_transp) CALL cons_transp() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false NEXT FIELD cons_transp END IF DISPLAY BY NAME fact_gral.cod_transp ATTRIBUTE (blue) DISPLAY BY NAME fact_gral.sec_transp ATTRIBUTE (blue) DISPLAY BY NAME fact_gral.nombre_tran ATTRIBUTE (blue) WHEN INFIELD(sec_transp) CALL cons_transp() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false NEXT FIELD cons_transp END IF DISPLAY BY NAME fact_gral.cod_transp ATTRIBUTE (blue) DISPLAY BY NAME fact_gral.sec_transp ATTRIBUTE (blue) DISPLAY BY NAME fact_gral.nombre_tran ATTRIBUTE (blue) END CASE } AFTER FIELD conduce # IF ch_servicios = "N" THEN IF fact_gral.ventas = "1" THEN LET tipo_f = "FT" END IF IF fact_gral.ventas = "2" THEN LET tipo_f = "FE" END IF IF fact_gral.ventas = "3" THEN LET tipo_f = "FE" END IF IF fact_gral.ventas = "4" THEN LET tipo_f = "FE" END IF IF fact_gral.conduce IS NOT NULL THEN SELECT UNIQUE a.cod_sp,a.cod_sp_sec, a.num_oc,CONVERT(CHAR(10),a.fecha,103), a.cod_transp,a.sec_transp,a.placa INTO fact_gral.tipo_cliente,fact_gral.sec_cliente,fact_gral.orden,fact_gral.fecha_conduce, fact_gral.cod_transp,fact_gral.sec_transp,fact_gral.placa_transp FROM iptb00006 a WHERE a.num_doc = fact_gral.conduce AND a.cod_mov = p_codigo AND a.status_t IS NULL AND a.bodega = fact_gral.bodega AND a.fecha > "01/01/2008" AND a.num_oc =fact_gral.orden IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD conduce END IF DISPLAY BY NAME fact_gral.tipo_cliente,fact_gral.sec_cliente,fact_gral.orden, fact_gral.cod_transp,fact_gral.sec_transp,fact_gral.placa_transp SELECT a.nombre,a.limite_credito,a.cod_zona,a.cod_provincia,a.telefono,a.num_rnc INTO fact_gral.nombre,credito,fact_gral.zona,codigo_provincia, cliente_bas.telefono,cliente_bas.num_rnc FROM vetb00004 a WHERE a.tipo_cliente = fact_gral.tipo_cliente AND a.sec_cliente = fact_gral.sec_cliente # SELECT b.calle,b.casa_num,b.barrio # INTO descrip1,descrip2,descrip3 # FROM vetb00005 b # WHERE b.tipo_cliente = fact_gral.tipo_cliente AND # b.sec_cliente = fact_gral.sec_cliente SELECT d.nombre_provincia,d.id_dgii,d.id_municipio_dgii INTO fact_gral.ciudad,documento_encabezado.Provincia, documento_encabezado.Municipio FROM vetb00020 d WHERE d.cod_provincia = codigo_provincia # LET fact_gral.direccion = descrip1 clipped,descrip2 clipped,", ", # descrip3 clipped SELECT unique descrip INTO descrip1 FROM vetb00008 WHERE cod_zona = CAST(fact_gral.zona as smallint) # BUSCA EL VENDEDOR SELECT a.sec_vend,a.nombre_file INTO fact_gral.sec_vend,documento_encabezado.NumeroOrdenCompra FROM prtb00012 a WHERE a.tipo_cliente = fact_gral.tipo_cliente AND a.sec_cliente = fact_gral.sec_cliente AND a.num_oc = fact_gral.orden IF STATUS = NOTFOUND THEN SELECT a.sec_vend INTO fact_gral.sec_vend FROM vetb00028 a WHERE a.tipo_cliente = fact_gral.tipo_cliente AND a.sec_cliente = fact_gral.sec_cliente END IF DISPLAY BY NAME fact_gral.sec_vend DISPLAY BY NAME fact_gral.zona,fact_gral.direccion,fact_gral.nombre,fact_gral.ciudad,descrip1, cliente_bas.num_rnc ATTRIBUTE (blue) # CONTROL DE REPETICION DE CONDUCES SELECT UNIQUE a.conduce FROM vetb00002 a WHERE a.conduce = fact_gral.conduce AND a.ventas = fact_gral.ventas AND a.fecha_factura > "01/01/2009" AND a.bodega = fact_gral.bodega 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 LET numero_msg = 395 CALL msg(numero_msg) NEXT FIELD conduce END IF END IF # END IF BEFORE FIELD ventas IF pcontroloutlet = "SI" THEN LET fact_gral.ventas=1 END IF LET pventas = ui.ComboBox.forName("formonly.ventas") CALL cventas() AFTER FIELD cod_cia IF fact_gral.cod_cia IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_cia END IF IF fact_gral.cod_cia = 1 THEN LET compania = p_companias.nombre CLIPPED END IF DISPLAY BY NAME compania ATTRIBUTE (blue) AFTER FIELD ventas IF fact_gral.ventas IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD ventas END IF # BUSCA EL CODIGO DEL MOVIMIENTO SELECT UNIQUE a.cod_mov INTO p_codigo FROM vetb00060 a WHERE a.ventas = fact_gral.ventas IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD ventas END IF LET tipo_fact = p_codigo IF fact_gral.ventas = "1" THEN LET tipo_f = "FT" ELSE IF fact_gral.ventas = "2" THEN LET tipo_f = "FE" END IF IF fact_gral.ventas = "3" THEN LET tipo_f = "FE" END IF # BUSCA LA PRIMA PARA LA MONEDA SELECT a.tasa INTO fact_gral.prima_us FROM vetb00061 a WHERE a.ventas = fact_gral.ventas IF fact_gral.prima_us IS NULL THEN CALL msg(87) NEXT FIELD ventas END IF {SE COLOCO EN COMENTARIO PORQUE SE ESTA BUSCANDO POR MONEDA SELECT prima INTO fact_gral.prima_us FROM vetb00019 WHERE disponible = "S" } END IF DISPLAY BY NAME fact_gral.porc_desc,fact_gral.prima_us, fact_gral.porc_itbi ATTRIBUTE(BOLD) DISPLAY BY NAME descrip1 ATTRIBUTE (BOLD) DISPLAY BY NAME descrip1 ATTRIBUTE(BLUE) AFTER FIELD tipo_cliente IF fact_gral.tipo_cliente = 23 OR fact_Gral.tipo_cliente = 24 THEN LET proforma = "PROFORMA" ELSE LET proforma="CONDUCE" END IF DISPLAY BY NAME proforma AFTER FIELD nombre IF fact_gral.nombre IS NOT NULL AND pcontroloutlet2="SI" THEN # CALL buscacliente(fact_gral.nombre,fact_gral.tipo_cliente,fact_gral.sec_cliente) # RETURNING fact_gral.nombre,fact_gral.tipo_cliente,fact_gral.sec_cliente, # fact_gral.direccion,fact_gral.ciudad,fact_gral.sec_vend,fact_gral.nombre_vend, exito1 IF pcontroloutlet2 = 'SI' THEN LET fact_gral.sec_vend = xsecvend CALL buscavend() END IF { IF exito1 = FALSE THEN CALL msg(3) IF pcontroloutlet2 = 'SI' THEN SET CONNECTION "MSSQL" IF fact_gral.sec_vend IS NULL OR fact_gral.sec_vend = 0 THEN SELECT ISNULL(a.sec_vend,0) INTO xsec_vend FROM seg0000 a WHERE a.usuario = usuarios LET fact_gral.sec_vend = xsec_vend END IF CALL crearcliente(num_rnc,fact_gral.tipo_cliente,fact_gral.sec_vend) RETURNING fact_gral.tipo_cliente,fact_gral.sec_cliente,fact_gral.nombre,fact_gral.direccion,fact_gral.ciudad, cliente_bas.telefono,fact_gral.zona SET CONNECTION "IFMX" END IF NEXT FIELD tipo_cliente END IF } DISPLAY BY NAME fact_gral.nombre,fact_gral.tipo_cliente,fact_gral.sec_cliente,fact_gral.direccion,fact_gral.ciudad, fact_gral.sec_vend,fact_gral.nombre_vend NEXT FIELD direccion END IF AFTER FIELD direccion LET tmpdireccion = null LET tmpdireccion = fact_gral.direccion CLIPPED AFTER FIELD sec_cliente IF fact_gral.sec_cliente IS NULL THEN IF pcontroloutlet2 <> "SI" THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD sec_cliente END IF ELSE IF fact_gral.fecha_factura IS NULL THEN LET fact_gral.fecha_factura = TODAY DISPLAY BY NAME fact_gral.fecha_factura END IF LET p_fechas = fact_gral.fecha_factura LET hoy = fact_gral.fecha_factura CALL prd(fact_gral.fecha_factura,usuarios) RETURNING bandera IF bandera = 1 THEN LET bandera = 0 NEXT FIELD fecha_factura END IF -- IF pcontroloutlet <> "SI" THEN SELECT a.nombre,a.limite_credito,a.cod_zona,a.cod_provincia,a.telefono,a.num_rnc INTO fact_gral.nombre,credito,fact_gral.zona,codigo_provincia, cliente_bas.telefono,num_rnc FROM vetb00004 a WHERE a.tipo_cliente = fact_gral.tipo_cliente AND a.sec_cliente = fact_gral.sec_cliente IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) # IF fact_gral.tipo_cliente IS NOT NULL AND fact_gral.sec_cliente IS NOT NULL THEN # IF pcontroloutlet2 = 'SI' THEN # CALL crearcliente(num_rnc,fact_gral.tipo_cliente,fact_gral.sec_vend) # RETURNING fact_gral.tipo_cliente,fact_gral.sec_cliente,fact_gral.nombre,fact_gral.direccion,fact_gral.ciudad, # cliente_bas.telefono,fact_gral.zona # END IF # END IF # NEXT FIELD tipo_cliente END IF { SE COLOCO EN COMENTARIO PORQUE SE ESTA OBTENIENDO DE LA TABLA VETB00050 FECHA MODIFICACION 21/05/2018 SELECT b.calle,b.casa_num,b.barrio INTO descrip1,descrip2,descrip3 FROM vetb00005 b WHERE b.tipo_cliente = fact_gral.tipo_cliente AND b.sec_cliente = fact_gral.sec_cliente } LET pcotizacion = NULL SELECT a.cotizacion_no INTO pcotizacion FROM prtb00012 a WHERE a.num_oc = fact_gral.orden AND a.status_t IS NULL IF pcotizacion IS NOT NULL THEN LET xdireccion_proyecto = NULL SELECT a.nombre_cliente,a.direccion_cliente,a.direccion_proyecto,a.rnc INTO fact_gral.nombre,fact_gral.direccion,xdireccion_proyecto,num_rnc FROM vetb00050 a WHERE a.cotizacion_no = pcotizacion END IF SELECT d.nombre_provincia,d.id_dgii,d.id_municipio_dgii INTO fact_gral.ciudad,documento_encabezado.ProvinciaComprador,documento_encabezado.MunicipioComprador FROM vetb00020 d WHERE d.cod_provincia = codigo_provincia IF pcotizacion IS NULL THEN IF fact_gral.direccion IS NULL THEN LET fact_gral.direccion = NULL SELECT RTRIM(a.calle)||' '||RTRIM(a.casa_num)||' '||RTRIM(a.urbanizacion)||' '||RTRIM(a.barrio) INTO fact_gral.direccion FROM vetb00005 a WHERE a.tipo_cliente = fact_gral.tipo_cliente AND a.sec_cliente = fact_Gral.sec_cliente END IF END IF DISPLAY BY NAME fact_gral.nombre,num_rnc,cliente_bas.telefono,fact_gral.ciudad, fact_gral.direccion #CONTROL TIPO DE CLIENTES MONEDA NCF IF ch_itbi = 'S' THEN SET CONNECTION "MSSQL" SELECT UNIQUE a.codigo_dgii INTO codigodgii FROM vetb00060 a WHERE a.ventas = fact_Gral.ventas AND a.tipo_cliente = fact_gral.tipo_cliente IF STATUS = NOTFOUND THEN LET numero_msg = 386 CALL msg(numero_msg) NEXT FIELD tipo_cliente END IF END IF IF codigodgii IS NOT NULL THEN SET CONNECTION "IFMX" DISPLAY "codigodgii ",codigodgii SELECT UNIQUE a.itbis INTO ch_itbi FROM vetb00071 a WHERE a.tipo_doc = "FT" and a.codigo_dgii = codigodgii AND a.disponible = "S" IF STATUS = NOTFOUND THEN LET numero_msg =391 CALL msg(numero_msg) NEXT FIELD tipo_cliente END IF END IF IF ch_itbi = 'N' THEN SET CONNECTION "MSSQL" LET fact_gral.porc_itbi=0 END IF DISPLAY BY NAME fact_gral.porc_itbi #NCF IF genera_ncf = "YES" THEN SET CONNECTION "MSSQL" LET cliente_ncf = "N" SELECT a.ncf INTO cliente_ncf FROM vetb00060 a WHERE a.tipo_cliente = fact_gral.tipo_cliente IF cliente_ncf = "S" THEN SET CONNECTION "IFMX" LET codigodgii = NULL LET descripcion = NULL CALL btipo_fact(localidad,'FT') RETURNING codigodgii,descripcion,fecha_vencimiento LET int_flag = FALSE DISPLAY BY NAME codigodgii DISPLAY descripcion TO descripcion_ncf DISPLAY BY NAME fecha_vencimiento SET CONNECTION "MSSQL" NEXT FIELD sec_vend END IF END IF SET CONNECTION "MSSQL" # LET fact_gral.direccion = descrip1 clipped,descrip2 clipped,", ", # descrip3 clipped SELECT unique descrip INTO descrip1 FROM vetb00008 WHERE cod_zona = CAST(fact_gral.zona as smallint) # BUSCA EL VENDEDOR SOLO SI LA FACTURA NO ES PARA EL OUTLET IF pcontroloutlet2 <> "SI" THEN SELECT a.sec_vend INTO fact_gral.sec_vend FROM prtb00012 a WHERE a.tipo_cliente = fact_gral.tipo_cliente AND a.sec_cliente = fact_gral.sec_cliente AND a.num_oc = fact_gral.orden IF STATUS = NOTFOUND THEN SELECT a.sec_vend INTO fact_gral.sec_vend FROM vetb00028 a WHERE a.tipo_cliente = fact_gral.tipo_cliente AND a.sec_cliente = fact_gral.sec_cliente END IF DISPLAY BY NAME fact_gral.sec_vend,fact_gral.nombre,codigodgii -- END IF FIN OUTLET DISPLAY BY NAME fact_gral.zona,fact_gral.direccion,fact_gral.nombre,fact_gral.ciudad,descrip1,num_rnc ATTRIBUTE (blue) SELECT SUM(@valor+@monto_desc) INTO valor FROM cctb00001 WHERE @fecha_orig <= fact_gral.fecha_factura AND @tipo_cliente = fact_gral.tipo_cliente AND @sec_cliente = fact_gral.sec_cliente AND @status_t IS NULL AND tipo_doc NOT in ("DE","PC","AV","AP") IF valor IS NULL THEN LET valor = 0.00 END IF SELECT SUM(@valor+@monto_desc) INTO valor1 FROM cctb00001 WHERE @fecha_orig <= fact_gral.fecha_factura AND @tipo_cliente = fact_gral.tipo_cliente AND @sec_cliente = fact_gral.sec_cliente AND @status_t IS NULL AND tipo_doc = "AV" AND num_doc = aplica_a IF valor1 IS NULL THEN LET valor1 = 0.00 END IF LET balance = valor - valor1 IF balance IS NULL THEN LET balance = 0 END IF LET ch_balance = balance using "###,###,###.##" DISPLAY BY NAME ch_balance ATTRIBUTE(BOLD) END IF END IF { COLOQUE ESTO EN COMENTARIO EL 15/11/2022 BEFORE FIELD nombre IF pcontroloutlet <> "SI" AND pcontroloutlet2 <> "SI" THEN NEXT FIELD tipo_cliente END IF } BEFORE FIELD prima_us IF fact_gral.ventas = "1" THEN NEXT FIELD cond_pago 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) # Verifica que el vendedor venda al cliente de la factura { IF pcontroloutlet <> "SI" THEN IF fact_gral.sec_vend != 8888 THEN SELECT unique * FROM vetb00028 WHERE sec_vend = fact_gral.sec_vend AND tipo_cliente = fact_gral.tipo_cliente AND sec_cliente = fact_gral.sec_cliente IF STATUS = NOTFOUND THEN LET numero_msg = 119 CALL msg(numero_msg) NEXT FIELD sec_vend END IF END IF END IF} 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 IF pcontroloutlet <> "SI" THEN LET fact_gral.nombre_tran = NULL LET p_cedula = NULL LET p_serie = NULL SELECT a.nombre,a.cedula INTO fact_gral.nombre_tran,p_cedula 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 END IF LET pcod_transp = fact_gral.cod_transp LET psec_transp = fact_gral.sec_transp 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 { ES PARA PONER LA FACTURA COMERCIAL EN EL CAMPO PLACA BEFORE FIELD fecha_embarque IF fact_gral.ventas = "1" or fact_gral.ventas = "3" THEN NEXT FIELD placa_transp END IF } AFTER FIELD fecha_embarque IF fact_Gral.ventas = "2" THEN IF fact_gral.fecha_embarque IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_embarque END IF END IF # No permite que el usuario introduzca un ano que no corresponda al actual LET ano_act = year(today) LET ano_fe = year(fact_gral.fecha_embarque) IF fact_gral.fecha_embarque > fact_gral.fecha_factura THEN LET numero_msg = 100 CALL msg(numero_msg) NEXT FIELD fecha_embarque END IF {POR EL ASUNTO DE LA FACTURA COMERCIAL IF fact_gral.ventas = "2" THEN EXIT INPUT END IF } AFTER FIELD orden SET CONNECTION "MSSQL" IF pcontroloutlet <> "SI" AND pcontroloutlet2 <> "SI" THEN IF fact_gral.orden IS NULL THEN CALL msg(16) NEXT FIELD orden END IF LET pubicacion = NULL LET documento_ref = NULL DISPLAY "orden ",fact_gral.orden SELECT UNIQUE CONVERT(char(10),a.fecha_oc,103),a.ubicacion,a.nombre_file, a.cond_pago,b.descrip,b.dias,a.cotizacion_no, a.tipo_cliente, a.sec_cliente INTO fact_gral.fecha_orden,pubicacion,documento_ref, fact_gral.cond_pago,condicion.descrip,condicion.dias, pcotizacion, fact_gral.tipo_cliente,fact_gral.sec_cliente FROM prtb00012 a,vetb00012 b 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.cond_pago = b.cond_pago AND a.status_t IS NULL IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD orden END IF SELECT a.nombre,a.limite_credito,a.cod_zona,a.cod_provincia,a.telefono,a.num_rnc INTO fact_gral.nombre,credito,fact_gral.zona,codigo_provincia, cliente_bas.telefono,num_rnc FROM vetb00004 a WHERE a.tipo_cliente = fact_gral.tipo_cliente AND a.sec_cliente = fact_gral.sec_cliente SELECT a.dias INTO condicion.dias FROM vetb00012 a WHERE a.cond_pago = fact_gral.cond_pago LET p_fecha_ven = fact_gral.fecha_factura + condicion.dias DISPLAY BY NAME p_fecha_ven ATTRIBUTE(RED) DISPLAY BY NAME fact_gral.fecha_orden,documento_ref, fact_gral.cond_pago,fact_gral.tipo_cliente,fact_gral.sec_cliente, fact_gral.nombre,fact_gral.zona LET porcentaje_n = 0 SELECT a.porc_negocio INTO porcentaje_n FROM vetb00086 a WHERE a.cotizacion_no = pcotizacion IF STATUS = NOTFOUND THEN LET porcentaje_n = 0 END IF END IF BEFORE FIELD placa_transp # LET fact_Gral.placa_transp = aplaca_transp LET p_fecha_ven = fact_gral.fecha_factura + condicion.dias DISPLAY BY NAME fact_gral.placa_transp DISPLAY BY NAME p_fecha_ven ATTRIBUTE(RED) AFTER FIELD placa_transp IF fact_gral.placa_transp IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) END IF LET aplaca_transp = fact_gral.placa_transp 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 genera_ncf = "YES" AND codigodgii IS NULL THEN SELECT a.paga_itbis INTO ch_itbi FROM vetb00060 a WHERE a.tipo_cliente = fact_gral.tipo_cliente IF ch_itbi = 'S' THEN CALL msg(16) NEXT FIELD codigodgii END IF END IF IF ch_itbi = 'S' THEN SELECT a.itbis INTO ch_itbi FROM vetb00071 a WHERE a.codigo_dgii = codigodgii AND a.disponible = 'S' IF fact_gral.fecha_factura IS NULL THEN LET fact_gral.fecha_factura = TODAY DISPLAY BY NAME fact_gral.fecha_factura END IF END IF DISPLAY BY NAME ch_itbi IF fact_gral.fecha_factura > TODAY THEN CALL msg(189) NEXT FIELD fecha_factura END IF LET p_fechas = fact_gral.fecha_factura LET hoy = fact_gral.fecha_factura CALL prd(fact_gral.fecha_factura,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 pcontroloutlet2 = 'SI' THEN { IF fact_gral.tipo_cliente = 19 OR fact_gral.tipo_cliente = 18 THEN CALL fgl_winmessage("INFO","TIPO CLIENTE INVALIDO","INFO") NEXT FIELD tipo_cliente END IF} IF codigodgii IS NULL AND ch_itbi='S' THEN NEXT FIELD sec_cliente END IF # LET fact_gral.sec_vend = xsecvend CALL buscavend() SET CONNECTION "MSSQL" SELECT UNIQUE a.cod_mov INTO p_codigo FROM vetb00060 a WHERE a.ventas = fact_gral.ventas IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD ventas END IF LET tipo_fact = p_codigo IF fact_gral.ventas = "1" THEN LET tipo_f = "FT" ELSE IF fact_gral.ventas = "2" THEN LET tipo_f = "FE" END IF IF fact_gral.ventas = "3" THEN LET tipo_f = "FE" END IF # BUSCA LA PRIMA PARA LA MONEDA SELECT a.tasa INTO fact_gral.prima_us FROM vetb00061 a WHERE a.ventas = fact_gral.ventas DISPLAY BY NAME fact_gral.prima_us IF fact_gral.prima_us IS NULL THEN CALL msg(87) NEXT FIELD ventas END IF { SELECT prima INTO fact_gral.prima_us FROM vetb00019 WHERE disponible = "S"} END IF END IF # CONTROL LOCALIDAD VENDEDOR SET CONNECTION "MSSQL" SELECT a.sec_vend FROM vetb00084 a WHERE a.sec_vend = fact_gral.sec_vend IF STATUS = NOTFOUND THEN CALL fgl_winmessage("INFO","VENDEDOR NO TIENE LOCALIDAD ASIGNADA, COMUNIQUESE CON ADM SISTEMA","INFO") CONTINUE INPUT END IF CALL buscavend() IF fact_gral.orden IS NOT NULL THEN LET pcotizacion = NULL SELECT a.cotizacion_no INTO pcotizacion FROM prtb00012 a WHERE a.num_oc = fact_gral.orden AND a.status_t IS NULL END IF DISPLAY BY NAME pcotizacion # CONTROL DE REPETICION DE CONDUCES SELECT UNIQUE a.conduce FROM vetb00002 a WHERE a.conduce = fact_gral.conduce AND a.ventas = fact_gral.ventas AND a.fecha_factura > "01/01/2009" AND a.bodega = fact_gral.bodega 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 LET numero_msg = 395 CALL msg(numero_msg) NEXT FIELD conduce END IF IF ch_itbi = 'N' THEN LET fact_gral.porc_itbi=0 END IF DISPLAY BY NAME fact_gral.porc_itbi SET CONNECTION "MSSQL" IF pcontroloutlet <> "SI" OR pcontroloutlet2 <> 'SI' THEN IF fact_gral.orden IS NOT NULL THEN LET pubicacion = NULL LET documento_ref = NULL SELECT UNIQUE CONVERT(char(10),a.fecha_oc,103),a.ubicacion,a.nombre_file, a.cond_pago,b.descrip,b.dias,a.cotizacion_no INTO fact_gral.fecha_orden,pubicacion,documento_ref, fact_gral.cond_pago,condicion.descrip,condicion.dias, pcotizacion FROM prtb00012 a,vetb00012 b 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.cond_pago = b.cond_pago AND a.status_t IS NULL IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD orden END IF END IF IF ch_itbi = 'N' THEN LET fact_gral.porc_itbi=0 END IF END IF #PORCENTAJE NEGOCIACION LET porcentaje_n = 0 SELECT a.porc_negocio INTO porcentaje_n FROM vetb00086 a WHERE a.cotizacion_no = pcotizacion IF STATUS = NOTFOUND THEN LET porcentaje_n = 0 END IF IF ch_itbi = "S" THEN SELECT a.itbi,a.porciento INTO fact_gral.porc_itbi,porce FROM vetb00019 a WHERE disponible = "S" LET itbis_o = fact_gral.itbi IF porcentaje_n > 0 THEN LET fact_gral.porc_itbi = fact_gral.porc_itbi * (porcentaje_n /100) END IF 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 = NULL ELSE IF fact_gral.ventas = "3" THEN LET fact_gral.prima_us = NULL # BUSCA LA PRIMA PARA LA MONEDA SELECT a.tasa INTO fact_gral.prima_us FROM vetb00061 a WHERE a.ventas = fact_gral.ventas DISPLAY BY NAME fact_gral.prima_us ELSE 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 DISPLAY BY NAME fact_gral.prima_us,fact_gral.porc_itbi ATTRIBUTE(BOLD) DISPLAY BY NAME descrip1 ATTRIBUTE (BOLD) IF fact_gral.sec_cliente IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD tipo_cliente END IF IF fact_gral.orden IS NULL AND (pcontroloutlet <> "SI" AND pcontroloutlet2 <>"SI") THEN CALL msg(16) NEXT FIELD orden END IF #DIRECCION LET pcotizacion = NULL SELECT a.cotizacion_no INTO pcotizacion FROM prtb00012 a WHERE a.num_oc = fact_gral.orden AND a.status_t IS NULL IF pcotizacion IS NOT NULL THEN LET xdireccion_proyecto = NULL SELECT a.nombre_cliente,a.direccion_cliente,a.direccion_proyecto,a.rnc,a.email INTO fact_gral.nombre,fact_gral.direccion,xdireccion_proyecto,num_rnc,emailcliente FROM vetb00050 a WHERE a.cotizacion_no = pcotizacion END IF SELECT d.nombre_provincia INTO fact_gral.ciudad FROM vetb00020 d WHERE d.cod_provincia = codigo_provincia IF pcontroloutlet2 = "SI" THEN # LET fact_gral.sec_vend = xsecvend CALL buscavend() END IF IF documento_encabezado.tipoPago = '1' AND fpago IS NULL THEN CALL msg(16) NEXT FIELD fpago END IF IF documento_encabezado.tipoPago = '1' AND xtipocta IS NULL THEN CALL msg(16) NEXT FIELD xtipocta END IF IF fpago =3 AND cuenta_cliente IS NULL THEN CALL msg(16) NEXT FIELD cuenta_cliente END IF IF genera_ncf = "YES" THEN SELECT a.itbis INTO ch_itbi FROM vetb00071 a WHERE a.codigo_dgii = codigodgii AND a.disponible = 'S' # BUSCA EL TIPO DE DOCUMENTO DEL CLIENTE SELECT a.num_rnc,a.zona_postal INTO num_rnc,tipodocumento FROM vetb00004 a WHERE a.tipo_cliente = fact_gral.tipo_cliente AND a.sec_cliente = fact_gral.sec_cliente IF tipodocumento = '2' THEN IF LENGTH(num_rnc) != 11 THEN CALL msg(77) NEXT FIELD num_rnc END IF END IF END IF # BUSCA LA PRIMA PARA LA MONEDA SELECT a.tasa INTO fact_gral.prima_us FROM vetb00061 a WHERE a.ventas = fact_gral.ventas IF fact_gral.prima_us IS NULL THEN CALL msg(87) NEXT FIELD ventas END IF # ESTO ES TEMPORAL, EN CASO QUE EL USUARIO DEJE LA VARIABLE ENCENDIDA # LET genera_ncf = "NO" DISPLAY BY NAME genera_ncf # DIRECCION CLIENTE IF pcotizacion IS NULL THEN IF fact_gral.direccion IS NULL THEN LET fact_gral.direccion = NULL SELECT RTRIM(a.calle)||' '||RTRIM(a.casa_num)||' '||RTRIM(a.urbanizacion)||' '||RTRIM(a.barrio) INTO fact_gral.direccion FROM vetb00005 a WHERE a.tipo_cliente = fact_gral.tipo_cliente AND a.sec_cliente = fact_Gral.sec_cliente END IF END IF IF pcotizacion IS NOT NULL THEN LET xdireccion_proyecto = NULL SELECT a.nombre_cliente,a.direccion_cliente,a.direccion_proyecto,a.rnc,a.cond_pago INTO fact_gral.nombre,fact_gral.direccion,xdireccion_proyecto,num_rnc,fact_Gral.cond_pago FROM vetb00050 a WHERE a.cotizacion_no = pcotizacion ELSE IF fact_gral.direccion IS NULL THEN SELECT b.calle,b.casa_num,b.barrio INTO descrip1,descrip2,descrip3 FROM vetb00005 b WHERE b.tipo_cliente = fact_gral.tipo_cliente AND b.sec_cliente = fact_gral.sec_cliente LET fact_Gral.direccion = descrip1 CLIPPED," ",descrip2 CLIPPED,", ",descrip3 CLIPPED END IF END IF SELECT a.dias INTO condicion.dias FROM vetb00012 a WHERE a.cond_pago = fact_gral.cond_pago LET p_fecha_ven = fact_gral.fecha_factura + condicion.dias DISPLAY BY NAME p_fecha_ven,fact_gral.direccion ATTRIBUTE(RED) 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 { IF fact_gral.prima_us IS NULL THEN SELECT a.prima INTO fact_gral.prima_us FROM vetb00019 a WHERE a.disponible = "S" END IF } CALL fact_det.clear() LABEL alla: DECLARE buscame CURSOR FOR SELECT DISTINCT a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.cantidad_2, a.precio,a.descuento,a.id_kit FROM prtb00013 AS a INNER JOIN iptb00006 b ON b.num_oc = a.num_oc and b.num_doc = fact_gral.conduce and b.cod_mov = p_codigo AND b.bodega = fact_gral.bodega AND a.area = b.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.num_oc = fact_gral.orden AND b.fecha > "01/01/2008" INNER JOIN prtb00012 as d on a.num_oc = d.num_oc AND d.status_t IS NULL LEFT OUTER JOIN vetb00050 x ON d.cotizacion_no =x.cotizacion_no LEFT OUTER JOIN vetb00051 x1 ON x1.cotizacion_no = x.cotizacion_no AND x1.area =a.area AND x1.cod_n = a.cod_n AND x1.cod_grupo = a.cod_grupo AND x1.cod_tipo = a.cod_tipo AND x1.cod_Sec = a.cod_Sec { INNER JOIN vetb00051 as c on d.cotizacion_no = c.cotizacion_no and a.cod_n = c.cod_n AND a.area = c.area AND a.cod_grupo = c.cod_grupo and a.cod_tipo = c.cod_tipo and a.cod_Sec = c.cod_Sec WHERE a.num_oc = fact_gral.orden UNION SELECT DISTINCT a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.cantidad_2, c.precio,c.porc_desc,c.id_kit FROM prtb00013 AS a INNER JOIN iptb00006 b ON b.conduce_no = a.num_oc and b.num_doc = fact_gral.conduce and b.cod_mov = p_codigo AND a.area = b.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 b.fecha > "01/01/2008" INNER JOIN prtb00012 as d on a.num_oc = d.num_oc AND d.status_t IS NULL INNER JOIN vetb00031 as c on d.cotizacion_no = c.cotizacion_no and a.cod_n = c.cod_n AND a.area = c.area AND a.cod_grupo = c.cod_grupo and a.cod_tipo = c.cod_tipo AND a.cod_Sec = c.cod_Sec AND d.status_t IS null WHERE a.num_oc = fact_gral.orden} ORDER BY a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.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].cantidad, fact_det[idx].precio, fact_det[idx].cantidad_2, fact_det[idx].kit_id IF fact_Det[idx].cantidad < 0 THEN LET fact_det[idx].cantidad = fact_det[idx].cantidad * -1 END IF LET pprecio[idx] = fact_det[idx].precio # LE COLOQUE EN COMENTARIO PORQUE LA TASA LA ESTOY CALCULANDO EN LA COTIZACION veprmt049 { IF fact_gral.ventas=1 AND fact_det[idx].kit_id IS NOT NULL THEN LET fact_det[idx].precio = fact_det[idx].precio * fact_gral.prima_us END IF } LET idx = idx + 1 { IF idx = 10 THEN EXIT FOREACH END IF } END FOREACH CALL set_count(idx-1) INPUT ARRAY fact_det WITHOUT DEFAULTS FROM s_fact.* ON ACTION DELETE LET curr=arr_curr() CALL pprecio.deleteElement(curr) CALL fact_Det.deleteElement(curr) BEFORE INPUT DISPLAY BY NAME fact_gral.direccion call dialog.setCellAttributes(att) 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 BEFORE ROW LET curr = arr_curr() LET scr_l = scr_line() AFTER ROW LET t_arr = arr_count() CALL after_all() ON ACTION bcodigo LET curr = arr_curr() LET scr_l = scr_line() CALL busca_pt() RETURNING fact_det[curr].cod_n,fact_det[curr].cod_grupo,fact_det[curr].cod_tipo, fact_det[curr].cod_sec,fact_det[curr].descrip_esp 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 AFTER FIELD cod_sec 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,ISNULL(SUM(b.cantidad_2),0),a.tipoproducto INTO fact_det[curr].descrip_esp,fact_det[curr].unidad_med, p_existencia, documento_detalle[curr].indicadorBienoServicio FROM iptb00002 a LEFT OUTER JOIN iptb00006 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) AND b.bodega = fact_gral.bodega AND b.status_t IS NULL 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,a.tipoproducto 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 IF p_existencia IS NULL THEN LET p_existencia = 0 END IF LET verdad = NULL IF pcontroloutlet = "SI" THEN SELECT ISNULL(a.precio,0) INTO fact_det[curr].precio FROM vetb00025 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.ventas = 1 AND a.tipo_cliente = fact_gral.tipo_cliente AND a.sec_cliente = fact_gral.sec_cliente AND a.status_t IS NULL END IF IF pcontroloutlet2="SI" THEN IF ofertas THEN CALL buscaOferta(fact_det[curr].cod_n,fact_det[curr].cod_grupo,fact_det[curr].cod_tipo, fact_det[curr].cod_sec,documento_oferta) RETURNING fact_det[curr].precio,fact_det[curr].cantidad_2 LET pprecio[curr] = fact_det[curr].precio ELSE SELECT ISNULL(a.precio,0) INTO fact_det[curr].precio FROM vetb00025 a,seg0009 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 a.cod_lista = b.cod_lista AND a.ventas = fact_gral.ventas AND b.usuario = usuarios AND a.status_t IS NULL IF STATUS = NOTFOUND THEN CALL msg(85) NEXT FIELD cod_sec END IF END IF DISPLAY fact_det[curr].descrip_esp,fact_det[curr].unidad_med, fact_det[curr].precio,fact_Det[curr].cantidad_2 TO s_fact[scr_l].descrip_esp,s_fact[scr_l].unidad_med, s_fact[scr_l].precio,s_fact[scr_l].cantidad_2 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 precio IF fact_det[curr].precio IS NOT NULL THEN IF fact_det[curr].precio < pprecio[curr] THEN CALL msg(1013) NEXT FIELD precio END IF END IF BEFORE FIELD cantidad LET curr = arr_curr() LET cantidadParaCalcular =fact_det[curr].cantidad USING "###,###,###.#####" LET fact_det[curr].cantidad =cantidadParaCalcular DISPLAY fact_det[curr].cantidad TO s_fact[scr_l].cantidad 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 p_existencia IS NULL THEN LET p_existencia = 0 END IF IF pcontroloutlet = "SI" OR pcontroloutlet2 = "SI" THEN IF fact_det[curr].cantidad > p_existencia THEN CALL msg(30) NEXT FIELD cantidad END IF NEXT FIELD kit_id END IF END IF BEFORE FIELD precio IF pcontroloutlet = "SI" THEN NEXT FIELD kit_id END IF AFTER FIELD cantidad_2 #-> Aqui se digita el % de descto. al producto. 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 IF pcontroloutlet2 = "SI" OR pcontroloutlet = 'SI' THEN IF fact_det[curr].cantidad_2 > xporciento THEN LET fact_det[curr].cantidad_2 = 0 CALL msg(145) NEXT FIELD cantidad_2 END IF END IF 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 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 LET opt = FGL_WINQUESTION("PREGUNTA","La Informacion Esta Correcta?","yes","yes|no","question",0) { PROMPT "Las Informaciones Estan Correctas (S/N)" FOR CHAR opt} LET cuenta_arr = arr_count() LET opt = UPSHIFT(opt) IF opt = "YES" THEN LABEL aqui: LET verdad = "S" LABEL anterior2: IF fact_gral.ventas = "1" THEN LET fact_gral.prima_us = 1 END IF LET lleva_parcial = "N" LET opt1="YES" #----------------------------------------------------------------------------------------- # CONSOLIDADO SET CONNECTION "MSSQL" SELECT a.ult_factura INTO fact_gral.factura FROM vetb00001 a WHERE a.sucid = localidad IF fact_gral.factura IS NULL THEN LET fact_gral.factura = 1 INSERT INTO vetb00001 (ult_factura,us_crea,fech_crea,sucid) VALUES (fact_gral.factura,usuarios,getdate(),localidad) ELSE LET fact_gral.factura = fact_gral.factura + 1 END IF DISPLAY fact_Gral.factura DISPLAY BY NAME descrip1 ATTRIBUTE(blue) LABEL brinca: # Actualiza la tabla de datos generales de la factura IF fact_gral.factura IS NOT NULL THEN BEGIN WORK # Actualiza la tabla control de la numeracion de la factura UPDATE vetb00001 SET ult_factura = fact_gral.factura, us_crea = SUSER_SNAME(), fech_crea = GETDATE() WHERE sucid = localidad # CONTROL DE REPETICION DE CONDUCES SELECT UNIQUE a.conduce FROM vetb00002 a WHERE a.conduce = fact_gral.conduce AND a.ventas = fact_gral.ventas AND a.fecha_factura > "01/01/2009" AND a.bodega = fact_gral.bodega 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 ROLLBACK WORK LET numero_msg = 395 CALL msg(numero_msg) NEXT FIELD conduce END IF # BUSCA INFORMACION COTIZACION, ZONA GEOGRAFICA LET pcotizacion = NULL SELECT a.cotizacion_no INTO pcotizacion FROM prtb00012 a WHERE a.num_oc = fact_gral.orden AND a.status_t IS NULL IF pcotizacion IS NOT NULL THEN LET xdireccion_proyecto = NULL SELECT a.nombre_cliente,a.direccion_cliente,a.direccion_proyecto,a.rnc, a.cod_zona,a.cod_provincia INTO fact_gral.nombre,fact_gral.direccion,xdireccion_proyecto,num_rnc, fact_gral.zona,codigo_provincia FROM vetb00050 a WHERE a.cotizacion_no = pcotizacion END IF SELECT d.nombre_provincia,d.id_dgii,d.id_municipio_dgii INTO fact_gral.ciudad,documento_encabezado.ProvinciaComprador,documento_encabezado.MunicipioComprador FROM vetb00020 d WHERE d.cod_provincia = codigo_provincia IF pcotizacion IS NULL THEN IF fact_gral.direccion IS NULL THEN LET fact_gral.direccion = NULL SELECT RTRIM(a.calle)||' '||RTRIM(a.casa_num)||' '||RTRIM(a.urbanizacion)||' '||RTRIM(a.barrio) INTO fact_gral.direccion FROM vetb00005 a WHERE a.tipo_cliente = fact_gral.tipo_cliente AND a.sec_cliente = fact_Gral.sec_cliente END IF END IF DISPLAY BY NAME fact_gral.nombre,num_rnc,cliente_bas.telefono,fact_gral.ciudad, fact_gral.direccion 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,documento,placa_transporte,bodega,cotizacion_no, tipo_factura,documento_ref,descripcion_documento,placa, nombre_cliente,direccion_cliente,telefono,rnc,sucid,observaciones,id_pago,tipo_cta, cod_provincia) 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,fact_gral.fecha_conduce, fact_gral.tipo_cliente,fact_gral.sec_cliente,factura_e,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,SUSER_SNAME(),GETDATE(),NULL,NULL,documento_ref,fact_gral.placa_transp, fact_gral.bodega,pcotizacion,proforma,pdocumento_ref,descripcion_doc,fact_gral.placa_transp, fact_gral.nombre,fact_gral.direccion,cliente_bas.telefono,num_rnc,localidad,observacion,fpago,xtipocta, codigo_provincia) # CONTROL RNC IF cliente_ncf = "S" AND pcontroloutlet2 = "SI" THEN IF num_rnc IS NULL THEN ROLLBACK WORK CALL msg(16) LET num_rnc = 'NO TIENE' NEXT FIELD cantidad DISPLAY BY NAME num_rnc ATTRIBUTE(RED,BLINK,REVERSE) END IF IF codigodgii = '32' THEN IF fact_gral.total_fact * fact_gral.prima_us > 250000 AND tipodocumento <> 3 THEN CALL buscaRnc(num_rnc) RETURNING exito2 ,fact_gral.nombre,fact_gral.direccion,fact_gral.ciudad,cliente_bas.telefono IF NOT exito2 THEN ROLLBACK WORK CALL msg(3) DISPLAY BY NAME num_rnc ATTRIBUTE(RED,BLINK,REVERSE) RETURN END IF DISPLAY BY NAME fact_gral.nombre,fact_gral.direccion,fact_gral.ciudad,cliente_bas.telefono END IF END IF IF codigodgii <> '32' THEN CALL buscaRnc(num_rnc) RETURNING exito2 ,fact_gral.nombre,fact_gral.direccion,fact_gral.ciudad,cliente_bas.telefono IF NOT exito2 THEN ROLLBACK WORK CALL msg(3) DISPLAY BY NAME num_rnc ATTRIBUTE(RED) RETURN END IF DISPLAY BY NAME fact_gral.nombre,fact_gral.direccion,fact_gral.ciudad,cliente_bas.telefono END IF END IF #------------------------------------------------------------------- UPDATE iptb00006 SET factura = fact_gral.factura WHERE num_doc = fact_gral.conduce AND cod_sp = fact_gral.tipo_cliente AND cod_sp_sec = fact_gral.sec_cliente AND bodega = fact_gral.bodega END IF CALL busca_avance(fact_gral.tipo_cliente,fact_gral.sec_cliente,pcotizacion,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 IF fact_gral.cond_pago = 4 AND pcontroloutlet2 ="SI" AND ch_itbi = 'N' THEN CALL veprfu001() END IF SELECT a.dias,a.descrip INTO condicion.dias,condicion.descrip FROM vetb00012 a where a.cond_pago = fact_gral.cond_pago 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,valor,monto_desc,us_crea,fech_crea,bodega,documento_ref,num_oc,sucid) 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, fact_gral.total_fact,'0', SUSER_SNAME(),GETDATE(),fact_gral.bodega,pcotizacion,fact_gral.orden,localidad) IF pcontroloutlet = "SI" OR pcontroloutlet2="SI" THEN # IF pcontroloutlet = "SI" THEN LET p_codigo = 94 # END IF CALL veconduce(fact_gral.*,fact_det,usuarios,clave,impresor,localidad,cliente_bas.telefono,p_codigo,observacion) RETURNING exito IF NOT exito THEN ROLLBACK WORK CALL msg(1663) NEXT FIELD tipo_cliente END IF END IF END IF #-> Actulizacion de la tabla de monitoreo de la orden de produccion vg Wednesday, 17 January, 2001 09:33:21 AM LET prtb09.num_oc = fact_gral.orden LET prtb09.fecha = fact_gral.fecha_factura IF cant_vend <> cant_prod THEN LET prtb09.pendiente = "S" LET prtb09.detalle = "DESPACHO DE MERCANCIA SEGUN FACT. # ",fact_gral.factura USING "<<<<<<<", " DE FECHA : ",fact_gral.fecha_factura USING "dd/mm/yyyy" END IF FOR idx = 1 TO fact_det.getLength() IF fact_det[idx].cantidad_2 IS NULL THEN LET fact_det[idx].cantidad_2 = 0 END IF IF fact_det[idx].cod_grupo IS NOT NULL THEN IF fact_det[idx].cod_n IS NULL THEN ROLLBACK WORK CALL msg(16) NEXT FIELD cod_n END IF IF fact_det[idx].cod_tipo IS NULL THEN ROLLBACK WORK CALL msg(16) NEXT FIELD cod_tipo END IF IF fact_det[idx].cod_sec IS NULL THEN ROLLBACK WORK CALL msg(16) NEXT FIELD cod_sec END IF END IF IF fact_det[idx].cod_tipo IS NOT NULL THEN IF fact_det[idx].cod_n IS NULL THEN ROLLBACK WORK CALL msg(16) NEXT FIELD cod_n END IF IF fact_det[idx].cod_sec IS NULL THEN ROLLBACK WORK CALL msg(16) NEXT FIELD cod_sec END IF IF fact_det[idx].cod_grupo IS NULL THEN ROLLBACK WORK CALL msg(16) NEXT FIELD cod_sec END IF END IF IF fact_det[idx].cod_n IS NOT NULL THEN IF fact_det[idx].cod_grupo IS NULL THEN ROLLBACK WORK CALL msg(16) NEXT FIELD cod_grupo END IF IF fact_det[idx].cod_tipo IS NULL THEN ROLLBACK WORK CALL msg(16) NEXT FIELD cod_tipo END IF IF fact_det[idx].cod_sec IS NULL THEN ROLLBACK WORK CALL msg(16) NEXT FIELD cod_sec END IF IF fact_det[idx].cantidad < 0 THEN LET fact_det[idx].cantidad = fact_det[idx].cantidad * -1 END IF IF fact_det[idx].precio IS NOT NULL THEN DISPLAY "PRECIO: ",fact_det[idx].precio, " PCOMP ",pprecio[idx] IF fact_det[idx].precio < pprecio[idx] THEN ROLLBACK WORK CALL msg(1013) NEXT FIELD precio END IF END IF INSERT INTO vetb00003 (cod_cia,factura,area,cod_n,cod_grupo,cod_tipo,cod_Sec,cantidad,cantidad_2,bonificacion,precio, us_crea,fech_crea,bodega,id_kit,sucid ) 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,SUSER_SNAME(),GETDATE(),fact_gral.bodega,fact_Det[idx].kit_id, localidad) # Actualiza el campo placa cuando la factura es de exportacion IF fact_gral.ventas = 2 THEN UPDATE iptb00006 SET placa = fact_gral.placa_transp WHERE num_doc = fact_gral.conduce AND cod_mov = 31 AND bodega = fact_gral.bodega END IF 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 IF # cod_n IS NULL END FOR COMMIT WORK DISPLAY BY NAME fact_gral.factura ### ============================== IMPRESION CONSOLIDADO============================= IF opt1 = "YES" THEN SET CONNECTION "MSSQL" #-> Valida si la factura realmente existe vg S�ado 24 de Marzo de 2001 SELECT DISTINCT a.factura FROM vetb00002 a WHERE a.factura = fact_gral.factura IF STATUS = NOTFOUND THEN GOTO regresa END IF CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of, doble_on,doble_off,comp_on,comp_off, doce,normal,archivo,copia # DISPLAY BY NAME imprime IF impresion1= 'MA' THEN START REPORT imp_fact 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_fact(fact_gral.*,fact_det[idx].*,tot_porc, p_bonifica[idx],cod_fact) END IF END FOR DISPLAY nombre_m CLIPPED AT 1,1 FINISH REPORT imp_fact RUN imprime ELSE LET r_output = "PDF" CALL configureOutput(r_output) RETURNING HANDLER START REPORT imp_fact 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_fact(fact_gral.*,fact_det[idx].*,tot_porc, p_bonifica[idx],cod_fact) END IF END FOR FINISH REPORT imp_fact END IF END IF #------------------------- TERMINA MSSQL---------------------------------------------- # INSERTA EN EXTERIOR IF genera_ncf = "YES" THEN IF cliente_ncf = "S" THEN IF localidad IS NULL THEN CALL fgl_winmessage("ERROR","LOCALIDAD ESTA EN BLANCO","INFO") RETURN END IF LET kncf = NULL IF codigodgii IS NOT NULL THEN SET CONNECTION "IFMX" LET factura_xc = fact_gral.factura # Control facturas NCF FOR idx = 1 TO fact_det.getLength() IF fact_det[idx].cod_n IS NOT NULL THEN IF pcontroloutlet2 <> 'SI' THEN CALL verifica_cantidad(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 execede IF NOT execede THEN CONTINUE FOR ELSE EXIT FOR END IF ELSE LET execede = FALSE END IF # CONTROL OUTLET END IF END FOR IF NOT execede THEN SELECT a.ncf INTO kncf FROM vetb00073 a WHERE a.tipo_doc = "FT" AND a.codigo_dgii = codigodgii # 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 ISNULL(a.ncf_final,0) INTO xncf_final FROM vetb00071 a WHERE a.codigo_dgii = codigodgii AND a.disponible = 'S' IF kncf > xncf_final THEN CALL fgl_winmessage("NCF","PROBLEMAS CON LA SECUENCIA DE LOS NCF, LLAME A FINANZAS","INFO") RETURN END IF SELECT ult_factura INTO fact_gral.factura FROM vetb00001 WHERE sucid = localidad IF fact_gral.factura IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) RETURN END IF LET fact_gral.factura = fact_gral.factura + 1 # CONTROL CONDUCE DE EXTERIOR, SE COLOCO EN COMENTARIO PORQUE ESTABA CREANDO UNA SITUACION, PERO DEFINITIVAMENTE, # EL CONTROL PARA QUE NO FACTURARAN DOS ORDENES ESTABA FUNCIONANDO. { LET cuenta_registro = 0 SELECT DISTINCT a.orden FROM vetb00002 a WHERE a.orden = fact_gral.orden AND a.status_t IS NULL IF STATUS !=NOTFOUND THEN CALL fgl_winmessage("INFO","NO ES POSIBLE FACTURAR CON NCF, ORDEN ESTA FACTURADA","INFO") EXIT PROGRAM END IF } BEGIN WORK UPDATE vetb00073 SET ncf = kncf,us_crea = usuarios,fech_crea = getdate() WHERE tipo_doc = 'FT' AND codigo_dgii = codigodgii UPDATE vetb00001 SET ult_factura = fact_gral.factura, us_crea = usuarios, fech_crea = GETDATE() WHERE sucid = localidad INSERT INTO vetb00072 VALUES (fact_gral.factura,"FT",codigodgii,kncf,usuarios,getdate(),localidad) LET documento_encabezado.eNcf ="E",codigodgii CLIPPED, kncf USING "&&&&&&&&&&" IF pcotizacion IS NULL THEN LET fact_gral.direccion = tmpdireccion IF fact_gral.direccion IS NULL THEN LET fact_gral.direccion = NULL SELECT RTRIM(a.calle)||' '||RTRIM(a.casa_num)||' '||RTRIM(a.urbanizacion)||' '||RTRIM(a.barrio) INTO fact_gral.direccion FROM vetb00005 a WHERE a.tipo_cliente = fact_gral.tipo_cliente AND a.sec_cliente = fact_Gral.sec_cliente END IF END IF 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,documento,placa_transporte,bodega,factura_c,sucid, nombre_cliente,direccion_cliente,direccion_proyecto,conduce_almacen,rnc,ncf, titulo_ncf,fecha_vencimiento_ncf,id_pago,tipo_cta,cotizacion_no,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,fact_gral.fecha_conduce, fact_gral.tipo_cliente,fact_gral.sec_cliente,factura_e,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,documento_ref,fact_gral.placa_transp, fact_gral.bodega,factura_xc,localidad,fact_gral.nombre,fact_gral.direccion, xdireccion_proyecto,fact_gral.conduce,num_rnc,documento_encabezado.eNcf,descripcion,fecha_vencimiento, fpago,xtipocta,pcotizacion,observacion) # Actualizacion de la tabla de cuentas por cobrar CALL busca_avance(fact_gral.tipo_cliente,fact_gral.sec_cliente,pcotizacion,fact_gral.total_fact,fact_gral.fecha_factura, fact_gral.sec_vend,localidad,fact_gral.factura,usuarios) IF fact_gral.cond_pago > 1 THEN IF fact_gral.cond_pago = 4 AND pcontroloutlet2 ="SI" THEN CALL veprfu001() LET otro_num_recibo = pagos.documento END IF SELECT a.dias,a.descrip INTO condicion.dias,condicion.descrip FROM vetb00012 a where a.cond_pago = fact_gral.cond_pago LET p_fecha_ven = fact_gral.fecha_factura + condicion.dias IF fact_gral.total_fact < 0 THEN LET fact_gral.total_fact = fact_gral.total_fact *-1 END IF INSERT INTO cctb00001 (cod_cia,tipo_doc,num_doc,tipo_cliente,sec_cliente,cod_emp_sec,fecha_orig, fecha_ven, aplica_a,valor,monto_desc,us_crea,fech_crea,bodega,sucid,documento_ref,num_oc, factura_ext) 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, fact_gral.total_fact,'0', usuarios,GETDATE(),fact_gral.bodega,localidad,pcotizacion, fact_gral.orden,factura_xc) END IF #-> Actulizacion de la tabla de monitoreo de la orden de produccion vg Wednesday, 17 January, 2001 09:33:21 AM LET prtb09.num_oc = fact_gral.orden LET prtb09.fecha = fact_gral.fecha_factura IF cant_vend <> cant_prod THEN LET prtb09.pendiente = "S" LET prtb09.detalle = "DESPACHO DE MERCANCIA SEGUN FACT. # ",fact_gral.factura USING "<<<<<<<", " DE FECHA : ",fact_gral.fecha_factura USING "dd/mm/yyyy" END IF CALL documento_detalle.clear() FOR idx = 1 TO fact_det.getLength() IF fact_det[idx].cantidad_2 IS NULL THEN LET fact_det[idx].cantidad_2 = 0 END IF IF fact_det[idx].cantidad < 0 THEN LET fact_det[idx].cantidad = fact_det[idx].cantidad *-1 END IF IF fact_det[idx].cod_n IS NOT NULL THEN # CALL verifica_cantidad(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 execede IF fact_det[idx].cantidad < 0 THEN LET fact_det[idx].cantidad = fact_det[idx].cantidad * -1 END IF IF fact_det[idx].cantidad > 0 AND idx <=100 THEN LET valor_desc = 0 LET valor_Desc_moneda =0 LET valor_desc_moneda = ((fact_det[idx].precio*fact_gral.prima_us) * fact_det[idx].cantidad) * (fact_det[idx].cantidad_2 / 100) LET valor_desc = (fact_det[idx].precio * fact_det[idx].cantidad) * (fact_det[idx].cantidad_2 / 100) IF valor_desc IS NULL THEN LET valor_desc =0 END IF LET documento_detalle[idx].precioUnitarioItem = (fact_Det[idx].precio*fact_gral.prima_us) -((fact_Det[idx].precio*fact_gral.prima_us) * (fact_det[idx].cantidad_2 / 100)) USING "<<<<<<<<<<<<<<<&.####" IF ch_itbi = 'S' THEN LET documento_detalle[idx].indicadorFacturacion=1 LET ditbis[idx] = fact_det[idx].monto_fact * (fact_gral.porc_itbi/100) ELSE IF codigodgii <> '46' THEN LET documento_detalle[idx].indicadorFacturacion=4 ELSE LET documento_detalle[idx].indicadorFacturacion=3 END IF END IF LET documento_detalle[idx].cantidadItem = fact_det[idx].cantidad USING "<<<<&&.##" LET documento_detalle[idx].nombreItem = fact_det[idx].descrip_esp CLIPPED LET documento_detalle[idx].montoItem = ((fact_det[idx].precio*fact_gral.prima_us) * fact_det[idx].cantidad) - valor_desc_moneda USING "<<<<<<<<<<<<<<<&.##" END IF IF ditbis[idx]IS NULL THEN LET ditbis[idx] = 0 END IF LET fact_Det[idx].monto_fact =fact_Det[idx].monto_fact + ditbis[idx] INSERT INTO vetb00003 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,NULL,usuarios,GETDATE(),NULL,NULL,localidad, fact_det[idx].kit_id,fact_Det[idx].descrip_esp,valor_desc,ditbis[idx],fact_det[idx].monto_fact) IF fact_det[idx].cantidad > 0 THEN LET fact_det[idx].cantidad= fact_det[idx].cantidad * -1 END IF INSERT INTO iptb00006 (cod_cia,num_doc,fecha,fact_no,conduce_no,cod_sp,cod_sp_sec,placa,cod_mov, cod_n,cod_grupo,cod_tipo,cod_sec,cantidad_1,cantidad_2,bodega,us_crea,fech_crea) VALUES (fact_gral.cod_cia,fact_gral.factura,fact_gral.fecha_factura, fact_gral.factura,fact_gral.orden,fact_gral.tipo_cliente, fact_gral.sec_cliente, fact_gral.placa_transp, p_codigo,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, localidad,usuarios,getdate()) IF fact_det[idx].cantidad < 0 THEN LET fact_det[idx].cantidad= fact_det[idx].cantidad * -1 END IF # Actualiza el campo placa cuando la factura es de exportacion IF fact_gral.ventas = 2 THEN UPDATE iptb00006 SET placa = fact_gral.placa_transp WHERE num_doc = fact_gral.conduce AND cod_mov = 31 END IF 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 IF # cod_n IS NULL END FOR COMMIT WORK #PROCESO E-NCF LET p_companias.direccion = NULL SELECT a.rnc,a.nombre,a.direccion1,a.email INTO p_companias.rnc,p_companias.nombre,p_companias.direccion1,p_companias.email FROM companias a LET documento_encabezado.numeroFacturaInterna = fact_gral.factura LET documento_encabezado.tipoIngreso = '01' LET documento_encabezado.nombreFile =p_companias.rnc CLIPPED,"E", codigodgii CLIPPED, kncf USING "&&&&&&&&&&",".xml" LET documento_encabezado.FechaVencimientoSecuencia = fecha_vencimiento USING "dd-mm-yyyy" LET documento_encabezado.numeroPedidoInterno = fact_gral.orden LET documento_encabezado.tipoEcf = codigodgii LET documento_encabezado.codigoVendedor = fact_gral.sec_vend LET documento_encabezado.correoEmisor = p_companias.email CLIPPED LET documento_encabezado.direccionEmisor = p_companias.direccion CLIPPED,p_companias.direccion1 CLIPPED LET documento_encabezado.Municipio = id_municipio_dgii CLIPPED LET documento_encabezado.Provincia =id_provincia_dgii CLIPPED LET documento_encabezado.CodigoInternoComprador = fact_gral.tipo_cliente USING "<<","-",fact_gral.sec_cliente USING "<<<<<<<<<" LET documento_encabezado.CorreoComprador = emailcliente IF xdireccion_proyecto IS NOT NULL THEN LET fact_gral.direccion = fact_gral.direccion CLIPPED," ",xdireccion_proyecto CLIPPED END IF IF fact_gral.direccion IS NOT NULL OR LENGTH(fact_gral.direccion) > 3 THEN LET documento_encabezado.DireccionComprador = fact_gral.direccion ELSE LET documento_encabezado.DireccionComprador = NULL END IF LET documento_encabezado.FechaEntrega = fact_gral.fecha_conduce IF codigodgii = '32' AND fact_gral.total_fact*fact_gral.prima_us >= 250000 THEN LET documento_encabezado.IdentificadorExtranjero = num_rnc # ELSE # LET documento_encabezado.rncComprador = num_rnc CLIPPED # LET documento_encabezado.razonSocialComprador = fact_gral.nombre CLIPPED END IF IF tipodocumento <> '3' THEN LET documento_encabezado.rncComprador = num_rnc CLIPPED END IF IF tipodocumento = '3' THEN LET documento_encabezado.IdentificadorExtranjero = num_rnc CLIPPED END IF CALL sus_caracter(fact_Gral.nombre) RETURNING documento_encabezado.razonSocialComprador LET documento_encabezado.razonSocialComprador = documento_encabezado.razonSocialComprador CLIPPED LET documento_encabezado.rncEmisor = p_companias.rnc CLIPPED LET documento_encabezado.razonSocialEmisor = p_companias.nombre CLIPPED LET documento_encabezado.fechaEmision = fact_gral.fecha_factura USING "dd-mm-yyyy" IF documento_encabezado.tipoPago <> '1' THEN LET documento_encabezado.fechaLimitePago = p_fecha_ven USING "dd-mm-yyyy" LET documento_encabezado.terminoPago = condicion.dias USING "<<<"," dias" END IF IF documento_encabezado.tipoPago = '1' THEN LET documento_encabezado.montoPago = fact_gral.total_fact*fact_gral.prima_us END IF LET documento_encabezado.NumeroCuentaPago = cuenta_cliente LET documento_encabezado.TipoCuentaPago = xtipocta IF ch_itbi = 'S' THEN LET documento_encabezado.indicadorMontoGravado=0 ELSE LET documento_encabezado.indicadorMontoGravado=NULL END IF LET documento_encabezado.FormadePAgo = NULL IF ch_itbi = 'S' THEN LET documento_encabezado.itbis1 = fact_gral.porc_itbi USING "<&" LET documento_encabezado.montoExento = null ELSE LET documento_encabezado.itbis1 =0 USING "<&" LET documento_encabezado.montoExento = fact_gral.total_fact*fact_gral.prima_us END IF LET documento_encabezado.itbis2 = 0 USING "<&" LET documento_encabezado.itbis3 = 0 USING "<&" IF ch_itbi = 'S' THEN LET documento_encabezado.montoExento=0 USING "<&" ELSE LET documento_encabezado.montoExento=(fact_gral.sub_total*fact_gral.prima_us) - (fact_gral.desc_valor * fact_gral.prima_us) END IF IF codigodgii <> '46' THEN LET documento_encabezado.montoGravadoI1 = (fact_gral.sub_total*fact_gral.prima_us) - (fact_gral.desc_valor * fact_gral.prima_us) LET documento_encabezado.montoGravadoI2 =0 USING "<&" LET documento_encabezado.montoGravadoI3 =0 USING "<&" ELSE LET documento_encabezado.montoGravadoI1 = 0 USING "<&" LET documento_encabezado.montoGravadoI2 =0 USING "<&" LET documento_encabezado.montoGravadoI3 =(fact_gral.sub_total*fact_gral.prima_us) - (fact_gral.desc_valor * fact_gral.prima_us) END IF LET documento_encabezado.montoGravadoTotal = (fact_gral.sub_total*fact_gral.prima_us) - (fact_gral.desc_valor*fact_gral.prima_us) LET documento_encabezado.totalItbis = fact_gral.itbi*fact_gral.prima_us USING "<<<<<<<<<<<<<<<&.##" LET documento_encabezado.totalItbis1 = fact_gral.itbi*fact_gral.prima_us USING "<<<<<<<<<<<<<<&.##" LET documento_encabezado.totalItbis2 = 0 USING "<&" LET documento_encabezado.totalItbis3 = 0 USING "<&" LET documento_encabezado.montoTotal = fact_gral.total_fact *fact_gral.prima_us USING "<<<<<<<<<<<<<<.##" # 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 pcodcia 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 pcodcia = 1 OR pcodcia = 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 # GENERA EL FILE XML PARA LOS eNCF # LET documento_encabezado.rncComprador = NULL # LET documento_encabezado.tipoIngreso = NULL CALL generafile(documento_encabezado.*,documento_detalle,localidad,localidad,'adicionar') RETURNING phash,respuesta,fechafirma,codigo # ESTE UPDATE ES PORQUE EL HASH QUE DEBE TENER LA FACTURA ES EL QUE VIENE DE ESTA FUNCION DISPLAY "esta es la respuesta en el veprmt001: ",respuesta UPDATE vetb00002 SET hash = phash,ultima_respuesta = respuesta, fechafirmadigital=fechafirma WHERE factura = fact_gral.factura AND sucid = localidad DISPLAY "esta es la localidad: ",localidad TRY LET valor_control_ncf = documento_encabezado.montoTotal IF codigodgii <> 32 THEN CALL procesoEncf(' ',"produccion",' ',0,0,'consultatrackid',respuesta) RETURNING phash,xrespuesta,codigo DISPLAY "estado respuesta: ",CURRENT,xrespuesta," codigo: ",codigo CALL util.JSON.parse(xrespuesta,p) DISPLAY "estado: ",xrespuesta END IF IF codigodgii = '32' AND valor_control_ncf < 250000 THEN # CALL procesoEncf(' ',"test",' ',0,0,'consultatrackid',respuesta) # RETURNING phash,xrespuesta IF codigo = 200 THEN CALL util.JSON.parse(respuesta,p32) LET p.estado = p32.estado LET p.mensajes[1].valor = p32.mensajes ELSE DISPLAY "tomo el P32ERR:",respuesta CALL util.JSON.parse(respuesta,p32err) LET p.estado = p32err.estado LET p.mensajes[1].valor = p32err.mensajes[1].valor END IF # LET p.estado = p1.estado # LET p.secuenciaUtilizada = p1.secuenciaUtilizada # LET p.encf = p1.encf # LET p.mensajes[1].valor = p1.mensajes DISPLAY "estado 32: ",p.estado END IF CATCH LET p.estado = 'ERROR' LET p.mensajes[1].valor="NO PUDE PARSEAR LA RESPUESTA EN EL PROGRAMA ADICION VEPRMT001" END TRY IF p.estado = ' ' OR p.estado IS NULL THEN LET p.estado = 'ERROR' END IF UPDATE vetb00002 SET trackid=p.trackid, estado_dgii = p.estado, mensaje = p.mensajes[1].valor WHERE factura = fact_gral.factura AND sucid = localidad ### IMPRESION FACTURA CON NCF SET CONNECTION "MSSQL" { ESTE PROCEDIMIENTO ESTABA PARA IMPRIMIR EN OTRA IMPRESORA REMOTA CALL defecto(usuarios,clave,xcopia) RETURNING imprime,negrilla_on,negrillas_of, doble_on,doble_off,comp_on,comp_off, doce,normal,archivo,copia START REPORT imp_fact_ncf 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_fact_ncf(fact_gral.*,fact_det[idx].*,tot_porc, p_bonifica[idx],cod_fact,kncf,codigodgii) END IF END FOR FINISH REPORT imp_fact_ncf RUN imprime } # INSERTA EL PAGO AL CONTADO EN LA PRIMERA CONEXION IF fact_gral.cond_pago = 4 AND pcontroloutlet2 = "SI" THEN IF fact_gral.total_fact <> 0 THEN LET pagos.factura = factura_xc SELECT ult_recibo INTO pagos.documento FROM cctb00003 WHERE tipo_doc = "PC" IF pagos.documento IS NULL THEN LET pagos.documento = 0 END IF LET pagos.documento = pagos.documento + 1 # DELETE FROM cctb00001 WHERE num_doc = pagos.documento AND tipo_doc = "PC" IF pagos.valor_total > 0 THEN LET pagos.valor_total = pagos.valor_total * -1 END IF BEGIN WORK INSERT INTO cctb00001 (cod_cia,num_doc,tipo_doc,tipo_cliente,sec_cliente, cod_emp,cod_emp_sec,fecha_orig,aplica_a,valor, monto_desc,us_crea,fech_crea,costo, valor_efectivo,valor_cheque,valor_tarjeta,sucid) VALUES (fact_gral.cod_cia,pagos.documento, "PC",fact_gral.tipo_cliente, fact_gral.sec_cliente,localidad,fact_gral.sec_vend, fact_gral.fecha_factura,pagos.factura, pagos.valor_total,'0',usuarios,getdate(),'0', pagos.valor_efectivo,pagos.valor_cheque,pagos.monto_cr,localidad) INSERT INTO cctb00011(cod_cia,num_doc,tipo_doc,tipo_cliente,sec_cliente,comentario,us_crea,fech_crea,SucID, cod_emp_sec,valor_recibo) VALUES (fact_gral.cod_cia,pagos.documento,'PC',fact_gral.tipo_cliente,fact_gral.sec_cliente, observacion,SUSER_SNAME(),GETDATE(),localidad,fact_gral.sec_vend, pagos.valor_total) UPDATE cctb00003 SET ult_recibo = pagos.documento, us_mod = usuarios, fech_mod = getdate() WHERE tipo_doc = "PC" INSERT INTO cctb00020 (cod_cia,tipo_doc,num_oc,fecha,tipo_cliente,sec_cliente, factura,valor_efectivo,num_trans,us_crea,fech_crea) VALUES (localidad,'PC',pagos.documento,pagos.fecha_factura, fact_gral.tipo_cliente, fact_gral.sec_cliente,fact_gral.orden, pagos.valor_total,otro_num_recibo,usuarios,getdate()) COMMIT WORK END IF END IF UPDATE vetb00002 SET factura_ext = fact_gral.factura WHERE factura = factura_xc AND tipo_cliente = fact_gral.tipo_cliente AND sec_cliente = fact_gral.sec_cliente UPDATE cctb00001 SET factura_ext = fact_gral.factura WHERE num_doc = factura_xc AND tipo_Doc IN ('FE','FT') AND tipo_cliente = fact_gral.tipo_cliente AND sec_cliente = fact_gral.sec_cliente CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of, doble_on,doble_off,comp_on,comp_off, doce,normal,archivo,copia SET CONNECTION "IFMX" { IF impresion1 = "MA" THEN START REPORT imp_fact_ncf 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_fact_ncf(fact_gral.*,fact_det[idx].*,tot_porc, p_bonifica[idx],cod_fact,kncf,codigodgii) END IF END FOR FINISH REPORT imp_fact_ncf RUN imprime LET impresion = "S" ELSE} IF p.estado = 'Rechazado' THEN DISPLAY BY NAME p.estado ATTRIBUTE(RED,REVERSE) RETURN ELSE DISPLAY BY NAME p.estado ATTRIBUTE(GREEN,REVERSE) END IF DISPLAY p.mensajes[1].valor TO mensaje_dgii LET r_filename = "veprmt022.4rp" LET r_output = "PDF" LET preview = 1 -- configure report engine; the functions prefixed fgl that are called here are part of the GRW API IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file CALL fgl_report_selectDevice(r_output) -- changing default IF preview = 0 THEN CALL fgl_report_selectPreview(1) -- changing default # CALL fgl_report_configureSVGPreview("PrintOnDefaultPrinter") ELSE CALL fgl_report_selectPreview(preview) END if LET handler = fgl_report_commitCurrentSettings() -- commit changes ELSE EXIT PROGRAM END IF --run the report IF handler IS NOT NULL THEN -- report engine was configured ok START REPORT imp_factura TO XML HANDLER HANDLER 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_factura(fact_gral.*,fact_det[idx].*,tot_porc, p_bonifica[idx],cod_fact,kncf,codigodgii,descripcion,observacion,usuarios, fecha_vencimiento) END IF END FOR FINISH REPORT imp_factura # END IF # TERMINA OPCION MATRICIAL O PDF ELSE CALL fgl_Winmessage("INFO","LA FACTURACION CON NCF NO SE PUEDE REALIZAR, ESTA FACTURADA","INFO") return END IF END IF # FIN CLIENTE_NCF END IF END IF ####----------------- TERMINA EXTERIOR----------------------------------------------- END IF LET numero_msg = 1 CALL msg(numero_msg) SET CONNECTION "MSSQL" 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 INITIALIZE fact_Gral.* TO NULL END INPUT 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].area = ant_art.area AND 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 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 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) 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(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 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), cantidad_orden DEC(12,5), pendiente DEC(12,5), facturada DEC(12,5), kit_id INT END RECORD DEFINE bonifica INTEGER, i,cod_f SMALLINT, plado1,plado2,plado3,pcantidad,pmedida,total_unidades DEC(12,5) 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) 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 PAGE HEADER 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 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 # IF ch_encabeza = "S" THEN # PRINT COLUMN lj, normal,doble,p_companias.nombre CLIPPED # PRINT COLUMN j+3, p_companias.direccion #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 "###" # ELSE # PRINT # PRINT # END IF IF ch_encabeza = "S" THEN PRINT COLUMN 4, normal,doble,"MARMOTECH, S. A." ELSE PRINT END IF IF proforma <> "PROFORMA" THEN PRINT COLUMN 4, doble,proforma CLIPPED,":",x.factura using "<<<<<<<<<" ELSE PRINT COLUMN 4, doble,"ORDEN DE DESPACHO" CLIPPED,":",x.factura using "<<<<<<<<<" END IF IF descripcion_doc IS NOT NULL THEN PRINT COLUMN 4, descripcion_Doc CLIPPED ELSE SKIP 1 LINE END IF PRINT COLUMN 4, doce,"PAGINA NO. ",pageno USING "<<<" #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[1,55] IF x.direccion[56,106] IS NOT NULL THEN PRINT COLUMN 4, x.direccion[56,106] ELSE PRINT '' END IF IF x.direccion[107,170] IS NOT NULL THEN PRINT COLUMN 4, x.direccion[107,170] ELSE PRINT ' ' END IF PRINT COLUMN 4, "Telefono: ",cliente_bas.telefono PRINT COLUMN 4, x.ciudad CLIPPED," RNC #",cliente_bas.num_rnc PRINT COLUMN 4, pubicacion [1,60] PRINT COLUMN 4, pubicacion[65,100] CLIPPED 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 PRINT "======================================================================================================", "=================================" PRINT COLUMN 1, "SALIDA", COLUMN 15, "ORDEN", COLUMN 25, "FECHA", COLUMN 38, "COTIZACION", COLUMN 52, "FACTURA E", COLUMN 65, "CONDICION", COLUMN 80, "VENDEDOR", COLUMN 113,"DOC.", COLUMN 123, "FECHA FACTURA" PRINT COLUMN 1, x.conduce USING "<<<<<", COLUMN 14, x.orden using "&&&&&&", COLUMN 25, x.fecha_orden using "dd/mm/yyyy", COLUMN 38, pcotizacion USING "&&&&&&", COLUMN 50, factura_e USING "&&&&&&", # COLUMN 65, pcondicion.getitemtext(x.cond_pago) CLIPPED, COLUMN 65, condicion.descrip[1,14], COLUMN 80, "(",x.sec_vend using "&&&&",") ",x.nombre_vend[1,20], COLUMN 113, documento_ref[1,10], COLUMN 126, x.fecha_factura using "dd/mm/yyyy" # PRINT COLUMN 65, condicion.descrip[15,30] 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.area SELECT a.nombre_area INTO descripcion_area FROM prtb00016 a WHERE a.area_num=Z.area PRINT "AREA: (",z.area USING "<<<",")",descripcion_area SKIP 1 LINE 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 DECLARE busca_d1 CURSOR FOR SELECT a.etiqueta,a.lado_1,a.lado_2,a.lado_3,a.cantidad,a.medida FROM iptb00025 a WHERE a.area = z.area AND a.cod_n = z.cod_n AND a.cod_grupo = z.cod_grupo AND a.cod_tipo = z.cod_tipo AND a.cod_sec = z.cod_sec AND a.cod_mov = p_codigo AND a.num_Doc = x.conduce LET total_unidades = 0 FOREACH busca_d1 INTO etiqueta,plado1,plado2,plado3,pcantidad,pmedida PRINT COLUMN 53,pcantidad USING "<<<,<<<"," ",etiqueta clipped," DE ",plado1 USING "<<.#####"," X ", plado2 USING "<<.#####"," X ",plado3 USING "<<.#####"," = ",pmedida USING "<<<.#####" LET total_unidades = total_unidades + pcantidad END FOREACH # IF total_unidades > 0 THEN # PRINT COLUMN 53, "TOTAL UNIDADES ",total_unidades USING "<,<<<" #END IF ON LAST ROW # Impresion de informaciones que pertenecen a facturas de exportacion IF x.ventas = "2" THEN 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 119, x.total_fact using "USD$###,###,###.##" 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 END IF # Impresion de datos que concierne solamente a tipos de facturas locales # SI LA FACTURA ES PROFORMA NO SE IMPRIMEN LOS TOTALES IF proforma <> "PROFORMA" THEN IF x.ventas = "1" THEN IF x.ventas = "1" THEN IF x.desc_valor <> 0 THEN SKIP 1 LINE PRINT COLUMN 78, "VALOR BRUTO ", COLUMN 122, x.sub_total using "###,###,###.##" PRINT COLUMN 78, "DESCUENTO", 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 122, x.total_fact using "###,###,###.##" PRINT COLUMN 122, "==============" END IF END IF IF x.ventas = "3" THEN SKIP 1 LINE PRINT COLUMN 78, "VALOR BRUTO ", COLUMN 122, x.sub_total using "###,###,###.##" IF x.desc_valor <> 0 THEN PRINT COLUMN 78, "DESCUENTO", # COLUMN 93, 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 61, porcentaje_n USING "###.##","%/ ",itbis_o USING "###.##","% ", 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 END IF #-------------------- TERMINA CONTROL PROFORMA------------------------------------- PRINT comprimido_of #SKIP 8 LINE PAGE TRAILER PRINT doce,comprimido_of PRINT "ESTO NO ES UN DOCUMENTO OFICIAL, LA(S) MERCANCIAS QUE ESTE DOCUMENTO INVOLUCRA," PRINT "ESTAN EN PROCESO DE EXONERACION DEL ITBIS, MEDIANTE LA LEY 158-01." PRINT "AL MOMENTO DE EMITIDA LA APROBACION, SE PROCEDERA A EMITIR LA FACTURA DEFINITIVA" LET obs1=observacion[1,50] LET obs2=observacion[51,101] LET obs3=observacion[102,152] LET obs4=observacion[152,180] SKIP 1 LINE PRINT COLUMN 3, "OBSERVACIONES: ",UPSHIFT(obs1) PRINT COLUMN 3, " ",UPSHIFT(obs2) CLIPPED PRINT COLUMN 3, " ",UPSHIFT(obs3) CLIPPED PRINT COLUMN 3, " ",UPSHIFT(obs4) CLIPPED SKIP 3 LINES IF proforma <> "PROFORMA" THEN PRINT COLUMN 4, "NOMBRE TRANSPORTISTA: ",x.nombre_tran, " ", "CEDULA: ",p_cedula using "&&&&&&&&&", " SERIE: ",p_serie using "&&&" IF x.ventas = "2" THEN PRINT COLUMN 4, "FACTURA COMERCIAL: ",x.placa_transp ELSE PRINT COLUMN 4, "PLACA DEL VEHICULO: ",x.placa_transp END IF ELSE SKIP 2 LINES END IF { 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_fact_ncf(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), kit_id INT END RECORD, Pcodigodgii LIKE vetb00071.codigo_dgii DEFINE i,cod_f SMALLINT DEFINE bonifica,pncf INTEGER DEFINE tot_b,tot_n,tot_m DECIMAL(12,2), ch_fech CHAR(20) DEFINE porciento DECIMAL(8,3) DEFINE normal,doce,negras,negras_off,doble CHAR(2) DEFINE rnc CHAR(11) DEFINE comprimido,comprimido_of CHAR(1) DEFINE j,lj,h INTEGER OUTPUT TOP MARGIN 2 LEFT MARGIN 0 # PAGE LENGTH 65 BOTTOM MARGIN 3 ORDER BY x.factura,z.cod_n,z.cod_sec FORMAT PAGE HEADER 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 SELECT a.nombre INTO p_companias.nombre FROM companias a LET lj = (80 - LENGTH(p_companias.nombre CLIPPED))/2 LET j = (80 - LENGTH(p_companias.direccion CLIPPED||", "||p_companias.direccion1 CLIPPED))/2 LET i = (80 - LENGTH("Tels : "||p_companias.telefono || " Fax : "||p_companias.fax CLIPPED))/2 LET h = (80 - LENGTH(p_companias.rnc CLIPPED))/2 #-------------------------------------------------------- PRINT COLUMN 1, normal,doble,p_companias.nombre CLIPPED PRINT COLUMN 1,doce, p_companias.direccion CLIPPED,", ", p_companias.direccion1 CLIPPED, 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 "###" #PRINT normal,comprimido_of #-------------------------------------------------------- SELECT num_rnc INTO rnc FROM vetb00004 WHERE tipo_cliente = x.tipo_cliente AND sec_cliente = x.sec_cliente AND status_t IS NULL #PRINT normal,comprimido_of 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 1, "SALIDA", COLUMN 15, "ORDEN", COLUMN 35, "FECHA", COLUMN 60, "CONDICION", COLUMN 80, "VENDEDOR", COLUMN 100, "COTIZACION", COLUMN 111, "DOCUMENTO", COLUMN 123, "FECHA FACTURA" PRINT COLUMN 1, x.conduce using "&&&&&&", COLUMN 14, x.orden using "&&&&&&", COLUMN 34, x.fecha_orden using "dd/mm/yyyy", COLUMN 60, condicion.descrip CLIPPED, COLUMN 80, "(",x.sec_vend using "&&&&",") ",x.nombre_vend CLIPPED, COLUMN 100, pcotizacion using "&&&&&&", 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 "======================================================================================================", "=================================" 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 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 78,"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 78, "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 78, "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 2 LINES END REPORT #--------------- PAGO AL CONTADO --------------------------------------------# FUNCTION veprfu001() OPEN WINDOW captura AT 7,12 WITH FORM "vefmwd013" ATTRIBUTE (BORDER,FORM LINE FIRST + 1,COMMENT LINE LAST) INPUT BY NAME pagos.* BEFORE INPUT LET pagos.tipo_cliente = fact_gral.tipo_cliente LET pagos.sec_cliente = fact_gral.sec_cliente LET pagos.nombre = fact_gral.nombre LET pagos.direccion = fact_gral.direccion LET pagos.ciudad = NULL LET pagos.fecha_factura = fact_gral.fecha_factura LET pagos.valor_efectivo = fact_gral.total_fact LET pagos.factura = fact_gral.factura LET pagos.valor_cheque = 0 LET pagos.valor_efectivo = fact_gral.total_fact LET pagos.valor_total = fact_gral.total_fact LET pagos.monto_cr = 0 LET pagos.fecha_factura = TODAY IF ch_itbi = 'S' THEN SELECT a.simbolo INTO pmoneda FROM vetb00060 a WHERE a.ventas = fact_gral.ventas ELSE SELECT a.simbolo INTO pmoneda FROM vetb00061 a WHERE a.ventas = fact_gral.ventas END IF DISPLAY BY NAME pagos.* AFTER FIELD factura IF pagos.factura IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD factura ELSE { SELECT a.fecha_factura,a.tipo_cliente,a.sec_cliente,b.nombre, a.neto,b.cod_provincia,a.sub_total,a.monto_itbi INTO fact_gral.fecha_factura,fact_gral.tipo_cliente, fact_gral.sec_cliente,fact_gral.nombre,fact_gral.total_fact, codigo_provincia,fact_gral.sub_total,fact_gral.itbi FROM vetb00002 a,vetb00004 b WHERE a.factura = pagos.factura AND a.tipo_cliente = b.tipo_cliente AND a.sec_cliente = b.sec_cliente AND a.status_t IS NULL } SELECT b.calle,b.casa_num,b.barrio INTO descrip1,descrip2,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 END IF LET fact_gral.factura = pagos.factura #NEXT FIELD detalle AFTER FIELD valor_cheque IF pagos.valor_cheque IS NOT NULL THEN LET pagos.valor_efectivo = fact_gral.total_fact - pagos.valor_cheque ELSE LET pagos.valor_efectivo = fact_gral.total_fact END IF DISPLAY BY NAME pagos.valor_efectivo AFTER FIELD monto_cr LET pagos.valor_total = pagos.valor_cheque + pagos.monto_cr + pagos.valor_efectivo DISPLAY BY NAME pagos.valor_total AFTER INPUT IF int_flag THEN LET int_flag = FALSE RETURN END IF IF pagos.nombre IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD nombre END IF LET pagos.valor_total = pagos.valor_cheque + pagos.monto_cr + pagos.valor_efectivo DISPLAY BY NAME pagos.valor_total IF pagos.valor_total > fact_gral.total_fact THEN CALL msg(168) NEXT FIELD valor_cheque END IF IF pagos.valor_total IS NULL THEN CALL msg(16) NEXT FIELD valor_cheque END IF LET p_fecha_ven = "01/01/01" IF fact_gral.total_fact IS NULL THEN LET fact_gral.total_fact = 0 END IF IF fact_gral.total_fact <> 0 THEN SELECT ult_recibo INTO pagos.documento FROM cctb00003 WHERE tipo_doc = "PC" IF pagos.documento IS NULL THEN LET pagos.documento = 0 END IF LET pagos.documento = pagos.documento + 1 IF fact_gral.total_fact > 0 THEN LET fact_gral.total_fact = fact_gral.total_fact * -1 END IF IF pagos.valor_total > 0 THEN LET pagos.valor_total = pagos.valor_total * -1 END IF INSERT INTO cctb00001 (cod_cia,num_doc,tipo_doc,tipo_cliente,sec_cliente, cod_emp,cod_emp_sec,fecha_orig,aplica_a,valor, monto_desc,us_crea,fech_crea,costo, valor_efectivo,valor_cheque,valor_tarjeta,sucid) VALUES (fact_gral.cod_cia,pagos.documento, "PC",fact_gral.tipo_cliente, fact_gral.sec_cliente,localidad,fact_gral.sec_vend, fact_gral.fecha_factura,pagos.factura, pagos.valor_total,'0',usuarios,getdate(),'1', pagos.valor_efectivo,pagos.valor_cheque,pagos.monto_cr,localidad) INSERT INTO cctb00011(cod_cia,num_doc,tipo_doc,tipo_cliente,sec_cliente,comentario,us_crea,fech_crea,SucID, cod_emp_sec,valor_recibo) VALUES (fact_gral.cod_cia,pagos.documento,'PC',fact_gral.tipo_cliente,fact_gral.sec_cliente, observacion,SUSER_SNAME(),GETDATE(),localidad,fact_gral.sec_vend, pagos.valor_total) UPDATE cctb00003 SET ult_recibo = pagos.documento, us_mod = usuarios, fech_mod = getdate() WHERE tipo_doc = "PC" IF fact_gral.total_fact < 0 THEN LET fact_gral.total_fact = fact_gral.total_fact*-1 END IF 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 volante TO archivo OUTPUT TO REPORT volante(pagos.*) FINISH REPORT volante RUN imprime ELSE NEXT FIELD monto_cr END IF END INPUT CLOSE WINDOW captura END FUNCTION REPORT volante (y) DEFINE y RECORD documento LIKE vetb00002.factura, fecha_factura DATE, factura LIKE vetb00002.factura, tipo_cliente INT, sec_cliente INT, nombre VARCHAR(100), direccion VARCHAR(100), ciudad VARCHAR(100), cheque_no LIKE cctb00001.num_cheque, banco LIKE cctb00001.banco, valor_cheque DECIMAL(12,2), valor_efectivo DECIMAL (12,2), monto_cr DEC(12,2), valor_total DEC(12,2) END RECORD DEFINE doble CHAR(1) DEFINE comp_off,negras,negras_of,italic,italic_of,normal CHAR(2) DEFINE solicitante CHAR(30) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 FORMAT PAGE HEADER LET normal = ASCII 27, ASCII 80 LET negras = ASCII 27, ASCII 69 LET negras_of = ASCII 27, ASCII 70 LET doble = ASCII 14 LET italic = ASCII 27, ASCII 52 LET italic_of = ASCII 27, ASCII 53 LET comp_off = ASCII 18 PRINT COLUMN 70,comp_off, ASCII 27, ASCII 80 IF y.tipo_cliente <> 19 AND y.tipo_cliente <> 18 THEN PRINT COLUMN 5, negras,p_companias.nombre CLIPPED,negras_of, COLUMN 72, today using "dd/mm/yyyy" PRINT COLUMN 5, p_companias.direccion CLIPPED," TEL. ",p_companias.telefono ELSE SKIP 2 LINES END IF SKIP 1 LINE PRINT COLUMN 15, italic,"RECIBO DE INGRESO" SKIP 2 LINE LET valor_orig = Y.valor_total LET valor_letras = NULL IF valor_orig < 0 THEN LET valor_orig=valor_orig*-1 END IF DISPLAY "valor rec ",valor_orig CALL convierte(valor_orig) PRINT COLUMN 5,doble,"NO. DOCUMENTO:", y.documento using "&&&&&&" PRINT COLUMN 5, "RECIBIMOS DE: ",negras,y.nombre,negras_of PRINT COLUMN 5, "DIRECCION: ",negras,y.direccion,negras_of PRINT COLUMN 5, "LOCALIDAD: ",negras,y.ciudad,negras_of PRINT COLUMN 5, "LA SUMA DE: ", negras,valor_letras clipped,negras_of#, #COLUMN 56, "RD$ ",negras,x.total_fact using "###,###,###.##",negras_of PRINT COLUMN 5, "VALOR RECIBIDO: ", COLUMN 25,"EN EFECTIVO: ",negras,y.valor_efectivo using "##,###,###.##", negras_of, COLUMN 58, "TRANSFERENCIA: ",negras,y.valor_cheque using "###,###,###.##", negras_of PRINT COLUMN 25, "TARJETA: ",y.monto_cr USING "##,###,###.##" PRINT COLUMN 5, "CHEQUE NO: ",negras,y.cheque_no,negras_of,"BANCO: ",negras,y.banco clipped, negras_of # PRINT COLUMN 5, "LOCALIDAD: ",negras,t1 clipped ,negras_of SKIP 1 LINE PRINT COLUMN 1, "------------------------------------------------------------------------------" PRINT COLUMN 5, "FECHA", COLUMN 20, "FACTURA", COLUMN 39, "VALOR FACTURA", COLUMN 60, "NETO COBRADO" PRINT COLUMN 1, "------------------------------------------------------------------------------" SKIP 1 LINE PRINT COLUMN 3, y.fecha_factura using "dd/mm/yyyy", COLUMN 20, y.factura using "&&&&&&" , COLUMN 38, fact_gral.total_fact using "###,###,###.##", COLUMN 58, y.valor_total using "###,###,###.##" ON LAST ROW SKIP 4 LINE PRINT COLUMN 5, 'OBSERVACION: ',observacion WORDWRAP RIGHT MARGIN 80 PRINT italic_of PRINT normal END REPORT FUNCTION anular() DEFINE documento_anular RECORD nombrefile,rnc_emisor,cantidadEncf,fechaAnulacion,numeroLineas,tipoeCF,secuenciaeCFdesde,secuenciaeCFhasta, cantidadeCFanulados STRING END RECORD DEFINE msg STRING,correos,subject ,procedimiento, cuerpo_correo VARCHAR(100), fecha_xc VARCHAR(10), motivo VARCHAR(200) LET INT_FLAG = FALSE call ui.Interface.loadStyles("formularios") OPEN WINDOW anula AT 7,5 WITH FORM "vefmwd006" ATTRIBUTE (BORDER, COMMENT LINE LAST - 1,PROMPT LINE LAST,FORM LINE FIRST + 1) INPUT BY NAME fact_gral.cod_cia,p_fact_no,motivo BEFORE INPUT DISPLAY sucnombre TO sucnombre AFTER FIELD p_fact_no SELECT UNIQUE CONVERT(CHAR(10),a.fecha_factura,103),a.orden,a.tipo_cliente,a.sec_cliente,neto, a.conduce,a.bodega INTO fact_gral.fecha_factura,fact_gral.orden,fact_gral.tipo_cliente, fact_gral.sec_cliente,fact_gral.total_fact,fact_gral.conduce, fact_gral.bodega FROM vetb00002 a WHERE a.factura = p_fact_no AND a.status_t IS NULL AND a.fech_crea >'01/01/2009' and a.cod_cia = fact_Gral.cod_cia AND a.sucid = localidad IF STATUS = NOTFOUND THEN LET numero_msg = 102 CALL msg(numero_msg) NEXT FIELD p_fact_no END IF SELECT a.nombre INTO fact_gral.nombre FROM vetb00004 a WHERE a.tipo_cliente = fact_gral.tipo_cliente AND a.sec_cliente = fact_gral.sec_cliente DISPLAY BY NAME fact_gral.tipo_cliente,fact_gral.sec_cliente, fact_gral.total_fact,fact_gral.nombre, fact_gral.fecha_factura ATTRIBUTE(blue) #CONTROL DEVOLUCIONES SELECT DISTINCT a.fact_no FROM iptb00006 a # WHERE a.cod_mov in (12,13) and CONVERT(int,a.fact_no) = p_fact_no AND WHERE a.cod_mov in (12,13) and a.fact_no = p_fact_no AND a.fecha > '01/01/2009' and a.status_t IS NULL IF STATUS != NOTFOUND THEN LET numero_msg =138 CALL msg(numero_msg) NEXT FIELD p_fact_no END IF LET p_fechas = fact_gral.fecha_factura #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.sucid = localidad 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") NEXT FIELD p_fact_no END IF { SELECT UNIQUE a.usuario INTO p_usuario FROM seg0001 a WHERE a.usuario = SUSER_SNAME() IF p_usuario = "rsierra" THEN IF fact_gral.fecha_factura != TODAY THEN ERROR "NO PUEDE ANULAR FACTURA QUE NO SEAN DEL DIA DE HOY" RETURN END IF END IF } CALL prd(fact_gral.fecha_factura,usuarios) RETURNING bandera AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) EXIT INPUT END IF #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.sucid = localidad 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") NEXT FIELD p_fact_no END IF LET selec = "SELECT distinct a.orden FROM exterior.dbo.vetb00002 a WHERE a.factura_c = ? AND a.status_t is null " PREPARE controlf FROM selec EXECUTE controlf USING p_fact_no IF STATUS <> NOTFOUND THEN CALL fgl_winmessage("ERROR","NO PUEDE ANULAR FACTURA, TIENE DOCUMENTOS EN FINANZAS","INFO") NEXT FIELD p_fact_no END IF LET opt3 = FGL_WINQUESTION("PREGUNTA","Esta seguro de Anular Esta Factura?","yes","Yes|no","question",0) LET opt3 = UPSHIFT(opt3) IF opt3 = "YES" THEN BEGIN WORK UPDATE vetb00002 SET observaciones = motivo, status_t = "E", us_mod = usuarios, fech_mod = GETDATE() WHERE factura = p_fact_no AND fech_crea > '01/01/2009' and cod_cia = fact_Gral.cod_cia AND sucid = localidad { EN COMENTARIO PORQUE ESTE PROGRAMA NO ACTUALIZA INVENTARIO UPDATE iptb00006 SET status_t = "E", us_mod = SUSER_SNAME(), fech_mod = GETDATE() WHERE num_doc = p_fact_no AND cod_mov IN (30,31,32,55) AND fech_crea > datetime (2006-03-31 08:00) year to minute and cod_cia = fact_Gral.cod_cia } #ANULACION PARA LOS OUTLETS UPDATE iptb00006 SET status_t = "E", us_mod = SUSER_SNAME(), fech_mod = GETDATE() WHERE num_doc = p_fact_no AND cod_mov = 94 AND bodega = fact_gral.bodega ---------------------------------------------------------------------------------------------------- UPDATE iptb00006 SET iptb00006.factura = NULL, us_mod = usuarios, fech_mod = getdate() WHERE iptb00006.factura = p_fact_no AND num_doc = fact_gral.conduce AND bodega = fact_gral.bodega AND status_T IS NULL UPDATE vetb00003 SET status_t = "E", us_mod = usuarios, fech_mod = GETDATE() WHERE factura = p_fact_no AND fech_crea > '01/01/2009' and cod_cia = fact_Gral.cod_cia 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 fech_crea > '01/01/2009' and cod_cia = fact_Gral.cod_cia AND sucid = localidad UPDATE cctb00001 SET status_t = "E", us_mod = usuarios, fech_mod = GETDATE() WHERE aplica_a = p_fact_no AND tipo_doc = "PC" and fech_crea > '01/01/2009' and cod_cia = fact_Gral.cod_cia AND sucid = localidad UPDATE cctb00001 SET status_t = "E", us_mod = usuarios, fech_mod = GETDATE() WHERE aplica_a = p_fact_no AND tipo_doc = "AP" AND sucid = localidad # ANULACION DE LAS SERIES IF fact_gral.ventas = "1" THEN LET p_codigo = 30 ELSE LET p_codigo = 31 END IF UPDATE vetb00042 set status_t = "E", us_mod = usuarios, fech_mod = GETDATE() WHERE factura = p_fact_no AND cod_mov = p_codigo COMMIT WORK # ANULAR EN EXTERIOR {SET CONNECTION "IFMX" LET factura_xc = NULL SELECT DISTINCT a.factura,CONVERT(VARCHAR(10),a.fecha_factura,103),ISNULL(a.estado_dgii,'NO TIENE') INTO factura_xc,fecha_xc,p.estado FROM vetb00002 a WHERE a.factura_c = p_fact_no AND a.sucid = localidad AND a.status_t IS null IF factura_xc IS NOT NULL AND p.estado = 'Rechazado' THEN # ASIGNACION VALORES PARA EL API ANULACION DGII # BUSCA EL NCF SELECT DISTINCT a.codigo_dgii,a.ncf INTO codigodgii,kncf FROM vetb00072 a WHERE a.tipo_doc = 'FT' AND a.documento = factura_xc AND a.sucid = localidad BEGIN WORK UPDATE vetb00002 SET observaciones=motivo, status_t = "E", us_mod = usuarios, fech_mod = GETDATE() WHERE factura = factura_xc AND fech_crea > '01/01/2009' and cod_cia = fact_Gral.cod_cia AND sucid = localidad UPDATE iptb00006 SET status_t = "E", us_mod = SUSER_SNAME(), fech_mod = GETDATE() WHERE num_doc = factura_xc AND cod_mov IN (30,31,32,55) UPDATE vetb00003 SET status_t = "E", us_mod = usuarios, fech_mod = GETDATE() WHERE factura = factura_xc AND fech_crea > '01/01/2009' and cod_cia = fact_Gral.cod_cia AND sucid = localidad UPDATE cctb00001 SET status_t = "E", us_mod = usuarios, fech_mod = GETDATE() WHERE num_doc = factura_xc AND (tipo_doc = "FT" or tipo_doc = "FE") AND fech_crea > '01/01/2009' and cod_cia = fact_Gral.cod_cia AND sucid = localidad UPDATE cctb00001 SET status_t = "E", us_mod = usuarios, fech_mod = GETDATE() WHERE aplica_a = factura_xc AND tipo_doc = "PC" and fech_crea > '01/01/2009' and cod_cia = fact_Gral.cod_cia AND sucid=localidad UPDATE cctb00001 SET status_t = "E", us_mod = usuarios, fech_mod = GETDATE() WHERE aplica_a = factura_xc AND tipo_doc = "AP" AND sucid = localidad COMMIT WORK SET CONNECTION "MSSQL" LET msg = "SE ANULO LA FACTURA CON NCF NO.",factura_xc USING "&&&&&&&&" CALL fgl_winmessage("INFO",msg,"INFO") LET subject = "FACTURA ANULADA ",factura_xc USING "&&&&&&&", "CON LA FECHA ",fecha_xc SET CONNECTION "MSSQL" LET numero_msg = 82 CALL msg(numero_msg) EXIT INPUT ELSE LET msg = "NO ES POSIBLE ANULAR FACTURA EN FINANZAS, TIENE ESTADO ",p.estado CLIPPED CALL fgl_winmessage("INFO",msg,"INFO") CONTINUE INPUT END IF } END IF EXIT INPUT END INPUT # Este Int_flag es porque tuve que salir del input con el int_flag verdadero # y asi poder salir del window sin problemas LET fact_gral.fecha_factura = TODAY CLOSE WINDOW anula 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 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 > "31122006" 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 #-> display "Vendido : ",vent_total," ","Prod : ",prod_total at 2,15 sleep 3 #-> Actualiza la fecha de cierre de la orden de corte vg Wednesday, 17 January, 200112:42:33 PM IF vent_total = prod_total THEN UPDATE prtb00012 SET fecha_cierre = fact_gral.fecha_factura WHERE @num_oc = forden AND @tipo_cliente = fact_gral.tipo_cliente AND @sec_cliente = fact_gral.sec_cliente LET prtb09.num_oc = forden LET prtb09.fecha = fact_gral.fecha_factura LET prtb09.pendiente = "N" LET prtb09.detalle = "CIERRE DE ORDEN DE PRODUCCION SEGUN FACT. # ",fact_gral.factura USING "<<<<<<<", " DE FECHA : ",fact_gral.fecha_factura USING "dd/mm/yyyy" INSERT INTO prtb00009 VALUES (prtb09.num_oc,prtb09.fecha,null,prtb09.pendiente, prtb09.detalle,NULL,SUSER_SNAME(),GETDATE(),NULL,NULL) END IF END FUNCTION FUNCTION convierte(valor_origen) # Funcion para convertir de valor a letras 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), valor_origen DEC(12,2) LET valor_orig = valor_origen CALL letras() LET valor_letras = null LET consegui = "N" LET entero = valor_orig LET cheles = (valor_orig - 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 IF k > 0 AND k < 10 THEN LET unid_c = c - (k * 100) # AQUI FUE IF k > 1 THEN LET valor_letras = valor_letras clipped," ",centenas[k] clipped ELSE IF k = 1 then IF unid_c > 0 THEN LET valor_letras = valor_letras clipped," ",centenas[k] clipped ELSE LET valor_letras = valor_letras clipped," ",decenas[81] clipped END IF end if END IF END IF LET unid_c = c - (k * 100) IF unid_c >0 and unid_c < 20 THEN LET valor_letras = valor_letras clipped," ",unidades1[unid_c] clipped ELSE LET unid_c = unid_c -19 IF unid_c >0 and unid_c <=81 then LET valor_letras = valor_letras clipped," ",decenas[unid_c] clipped LET consegui = "S" end if END IF IF c > 82 and c < 100 and consegui <> "S" THEN LET c = c-19 LET valor_letras = valor_letras CLIPPED," ",decenas[c] CLIPPED END IF IF c > 100 AND consegui <> "S" THEN LET c = c -119 IF c > 0 and c <= 81 THEN LET valor_letras = valor_letras CLIPPED," ",decenas[c] CLIPPED LET consegui = "N" END IF 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 <= 81 THEN LET a = unidades_m -19 IF a > 0 and a<= 81 THEN LET valor_letras = valor_letras clipped, " ",decenas[a] clipped LET consegui="S" ELSE LET valor_letras = valor_letras clipped, " ",unidades1[unidades_m] clipped END IF 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 /100 IF b >0 and b <=9 THEN if b = 1 then LET valor_letras = valor_letras clipped," CIEN " else LET valor_letras = valor_letras clipped," ",centenas[b] clipped end if 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 u = u - 19 # 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 IF u >=1 and u < 82 THEN # LET u = u - 19 # adicione este 13/5/2011 La quite el 30/5/2011 LET valor_letras = valor_letras clipped," ",decenas[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 LET unidades_mi = unidades_mi-19 IF unidades_mi > 0 and unidades_mi <= 81 THEN LET m = unidades_mi LET valor_letras = valor_letras clipped, " ",decenas[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," ",pmoneda 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] = "DIECISEIS" LET unidades1[17] = "DIECISIETE" LET unidades1[18] = "DIECIOCHO" LET unidades1[19] = "DIECINUEVE" 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 fact_det.getLength() 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 IF ch_itbi = 'S' THEN 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 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 ATTRIBUTE (BOLD) END FUNCTION { FUNCTION despiece() OPEN WINDOW despieza AT 15,5 WITH FORM "vefmwd017" END FUNCTION FUNCTION despiecerow() DEFINE plado1,plado2,plado3,pcantidad,pmedida DEC(15,4) DECLARE despiecer CURSOR FOR SELECT a.etiqueta,a.lado_1,a.lado_2,a.lado_3,a.cantidad,a.medida FROM iptb00025 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 AND a.cod_mov = p_codigo AND a.num_Doc = x.conduce LET total_unidades = 0 FOREACH despiecer INTO etiqueta,plado1,plado2,plado3,pcantidad,pmedida FUNCTION ccondicion() DEFINE kcond_pago SMALLINT, dcondicion CHAR(30) LET pcondicion = ui.combobox.forname("formonly.cond_pago") DECLARE bcondicion CURSOR FOR SELECT a.cond_pago,a.descrip,a.dias FROM vetb00012 a CALL pcondicion.clear() FOREACH bcondicion INTO condicion.cond_pago,condicion.descrip,condicion.dias CALL pcondicion.additem(condicion.cond_pago,condicion.descrip) END FOREACH END FUNCTION } FUNCTION veprmf001() DEFINE tot_porc dec(8,2), cod_fact SMALLINT, imprime_ncf VARCHAR(3) SET CONNECTION "MSSQL" INPUT BY NAME impresion1 AFTER INPUT IF int_flag THEN CALL msg(2) LET int_flag = FALSE RETURN END IF END INPUT CONSTRUCT criterio ON a.factura,a.fecha_factura,a.tipo_cliente,a.sec_cliente,a.orden, a.bodega,a.conduce,a.cod_vend FROM factura,fecha_factura,tipo_cliente,sec_cliente,orden, bodega,conduce,factura_e BEFORE CONSTRUCT CALL bodegas('1') AFTER CONSTRUCT IF int_flag THEN CALL msg(2) LET int_flag = FALSE RETURN END IF EXIT CONSTRUCT END CONSTRUCT LET selec = " SELECT a.cod_cia,a.ventas,a.zona,a.factura,a.bodega,a.conduce,convert(char(10),a.fecha_conduce,103),convert(char(10),a.fecha_factura,103),a.tipo_cliente, ", " a.sec_cliente,g.nombre,ISNULL(RTRIM(b.direccion_cliente),' '), ", " l.nombre_provincia,a.prima_us,a.porc_Desc,a.cond_pago,a.orden,convert(char(10),a.fecha_orden,103),a.porc_itbi,a.sec_vend, ", " ISNULL(RTRIM(d.nom1_emp),' ') + ' ' + ISNULL(RTRIM(d.apell1_emp),' '),' ', ' ',' ',' ', ", " convert(char(10),a.fecha_embarque,103),' ',a.sub_total,a.monto_Desc, ", " a.monto_itbi,a.neto,a.cod_vend,a.documento,a.tipo_factura,a.descripcion_documento,a.documento_ref, ", " a.cotizacion_no,g.num_rnc,CASE a.status_t WHEN 'E' THEN 'ANULADA' ELSE 'ACTIVA' END,a.us_crea,a.fech_crea,a.us_mod,a.fech_mod, ", " a.observaciones ", " FROM vetb00002 a left outer join ", " vetb00050 b on a.tipo_cliente = b.tipo_cliente and a.sec_cliente = b.sec_cliente AND a.cotizacion_no = b.cotizacion_no, ", " vetb00004 g left outer join vetb00020 l ON g.cod_provincia =l.cod_provincia , adtb00003 d,vetb00060 k ", " WHERE a.ventas = k.ventas and a.tipo_cliente = k.tipo_cliente and ", " a.tipo_cliente = g.tipo_cliente and ", criterio CLIPPED," and ", " a.sec_cliente = g.sec_cliente and ", " a.sec_vend = d.num_emp and a.sucid=",localidad, " ORDER BY a.factura " PREPARE comando FROM selec DECLARE consulta SCROLL CURSOR FOR comando OPEN consulta FETCH FIRST consulta INTO fact_gral.*,factura_e,documento_ref,proforma,descripcion_doc,pdocumento_Ref,pcotizacion,cliente_bas.num_rnc, estadoFactura, cliente_bas.us_crea,fcrea,cliente_bas.us_mod,ccrea,observacion IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF CALL info() CALL informacion(fact_gral.conduce,fact_gral.ventas,fact_gral.bodega,pcotizacion) LET pcondicion = ui.ComboBox.forName("formonly.cond_pago") CALL ccondicion() CALL bodegas('1') # CALL busca_ncf(fact_gral.factura) RETURNING codigodgii,kncf,descripcion_ncf,factura_xc MENU "NAVEGACION:" COMMAND "Siguiente" FETCH NEXT consulta INTO fact_gral.*,factura_e,documento_ref,proforma,descripcion_doc,pdocumento_Ref,pcotizacion,cliente_bas.num_rnc, estadoFactura,cliente_bas.us_crea,fcrea,cliente_bas.us_mod,ccrea,observacion IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF CALL info() CALL informacion(fact_gral.conduce,fact_gral.ventas,fact_gral.bodega,pcotizacion) LET pcondicion = ui.ComboBox.forName("formonly.cond_pago") CALL ccondicion() # CALL busca_ncf(fact_gral.factura) RETURNING codigodgii,kncf,descripcion_ncf,factura_xc COMMAND "Anterior" FETCH PREVIOUS consulta INTO fact_gral.*,factura_e,documento_ref,proforma,descripcion_doc,pdocumento_Ref,pcotizacion,cliente_bas.num_rnc, estadoFactura,cliente_bas.us_crea,fcrea,cliente_bas.us_mod,ccrea,observacion IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF CALL info() CALL informacion(fact_gral.conduce,fact_gral.ventas,fact_gral.bodega,pcotizacion) LET pcondicion = ui.ComboBox.forName("formonly.cond_pago") CALL ccondicion() # CALL busca_ncf(fact_gral.factura) RETURNING codigodgii,kncf,descripcion_ncf,factura_xc COMMAND "Primero" FETCH FIRST consulta INTO fact_gral.*,factura_e,documento_ref,proforma,descripcion_doc,pdocumento_Ref,pcotizacion,cliente_bas.num_rnc, estadoFactura,cliente_bas.us_crea,fcrea,cliente_bas.us_mod,ccrea,observacion IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF CALL info() CALL informacion(fact_gral.conduce,fact_gral.ventas,fact_gral.bodega,pcotizacion) LET pcondicion = ui.ComboBox.forName("formonly.cond_pago") CALL ccondicion() # CALL busca_ncf(fact_gral.factura) RETURNING codigodgii,kncf,descripcion_ncf,factura_xc COMMAND "Ultimo" FETCH LAST consulta INTO fact_gral.*,factura_e,documento_ref,proforma,descripcion_doc,pdocumento_Ref,pcotizacion,cliente_bas.num_rnc, estadoFactura,cliente_bas.us_crea,fcrea,cliente_bas.us_mod,ccrea,observacion IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF CALL info() CALL informacion(fact_gral.conduce,fact_gral.ventas,fact_gral.bodega,pcotizacion) LET pcondicion = ui.ComboBox.forName("formonly.cond_pago") CALL ccondicion() # CALL busca_ncf(fact_gral.factura) RETURNING codigodgii,kncf,descripcion_ncf,factura_xc COMMAND "RECIBO" CALL imprecibo() COMMAND "ITEMS" SET CONNECTION "MSSQL" SELECT UNIQUE CONVERT(char(10),a.fecha_oc,103),a.ubicacion,a.nombre_file, a.cond_pago,b.descrip,b.dias,a.cotizacion_no INTO fact_gral.fecha_orden,pubicacion,documento_ref, fact_gral.cond_pago,condicion.descrip,condicion.dias, pcotizacion FROM prtb00012 a,vetb00012 b 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.cond_pago = b.cond_pago AND a.status_t IS NULL SELECT a.nombre,a.cod_zona,a.cod_provincia,a.telefono,a.num_rnc INTO fact_gral.nombre,fact_gral.zona,codigo_provincia, cliente_bas.telefono,cliente_bas.num_rnc FROM vetb00004 a WHERE a.tipo_cliente = fact_gral.tipo_cliente AND a.sec_cliente = fact_gral.sec_cliente LET ch_encabeza ="S" CALL fact_det.clear() LET factura_old = fact_gral.factura CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of, doble_on,doble_off,comp_on,comp_off, doce,normal,archivo,copia DISPLAY BY NAME imprime IF impresion1 = 'MA' THEN START REPORT imp_fact TO archivo ELSE LET r_output = "PDF" CALL configureOutput(r_output) RETURNING HANDLER START REPORT imp_fact TO XML HANDLER HANDLER END IF LET selec = "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.cantidad*a.precio)*(a.cantidad_2/100), ", " (a.cantidad*a.precio) -(a.cantidad*a.precio)*(a.cantidad_2/100) ", " FROM vetb00003 a,iptb00002 b ", " WHERE a.factura = ? 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.sucid = ? " { ESTA EN COMENTARIO PORQUE ESTABA DANDO UN ERROR DE IDIOMA " UNION ", "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.cantidad*a.precio)*(a.cantidad_2/100), ", " (a.cantidad*a.precio) -(a.cantidad*a.precio)*(a.cantidad_2/100) ", " FROM historicomtech.dbo.vetb00003 a,historicomtech.dbo.iptb00002 b ", " WHERE a.factura = ? 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 " } PREPARE cmdfact FROM selec DECLARE busca_items CURSOR FOR cmdfact OPEN busca_items USING fact_gral.factura,localidad 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 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 OUTPUT TO REPORT imp_fact(fact_gral.*,fact_det[idx].*,tot_porc, p_bonifica[idx],cod_fact) LET idx = idx + 1 END FOREACH CALL set_count(idx-1) DISPLAY ARRAY fact_det TO s_fact.* FINISH REPORT imp_fact IF impresion1 = 'MA' THEN RUN imprime END IF # CONTROL NCF SELECT a.ncf INTO cliente_ncf FROM vetb00060 a WHERE a.tipo_cliente = fact_gral.tipo_cliente IF cliente_ncf = "S" THEN LET imprime_ncf = fgl_winquestion("NCF","DESEA IMPRIMIR FACTURA CON NCF?","NO","NO|YES","QUESTION",0) IF imprime_ncf = "YES" THEN ### IMPRESION FACTURA CON NCF SET CONNECTION "MSSQL" SELECT a.sucid,b.sucnombre,b.direccion,c.nombre_provincia,b.telefono,b.fax,b.rnc INTO localidad,sucnombre,p_companias.direccion,p_companias.direccion1, 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 LET p_companias.nombre= sucnombre CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of, doble_on,doble_off,comp_on,comp_off, doce,normal,archivo,copia SET CONNECTION "IFMX" SELECT MAX(a.factura) INTO factura_xc FROM vetb00002 a WHERE a.factura_c = fact_gral.factura AND a.sucid = localidad DISPLAY factura_xc TO factura1 DISPLAY "facturas exterior: ",factura_xc DISPLAY "factura fact_Gral: ",fact_gral.factura LET codigodgii =NULL LET kncf = NULL LET descripcion=NULL SELECT a.codigo_dgii,a.ncf,b.tipo_ncf,CONVERT(CHAR(10),b.fecha_vencimiento,103),b.itbis INTO codigodgii,kncf,descripcion,fecha_vencimiento,ch_itbi FROM vetb00072 a,vetb00071 b WHERE a.documento = factura_xc AND a.codigo_dgii = b.codigo_dgii AND a.tipo_doc = 'FT' AND b.disponible = 'S' AND a.sucid = localidad IF STATUS <> NOTFOUND THEN LET fact_gral.factura = factura_xc { IF impresion1 = "MA" THEN START REPORT imp_fact_ncf 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_fact_ncf(fact_gral.*,fact_det[idx].*,tot_porc, p_bonifica[idx],cod_fact,kncf,codigodgii) END IF END FOR FINISH REPORT imp_fact_ncf RUN imprime ELSE} LET r_filename = "veprmt022.4rp" LET r_output = "PDF" LET preview = 1 -- configure report engine; the functions prefixed fgl that are called here are part of the GRW API IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file CALL fgl_report_selectDevice(r_output) -- changing default IF preview = 0 THEN CALL fgl_report_selectPreview(1) -- changing default # CALL fgl_report_configureSVGPreview("PrintOnDefaultPrinter") ELSE CALL fgl_report_selectPreview(preview) END if LET handler = fgl_report_commitCurrentSettings() -- commit changes ELSE EXIT PROGRAM END IF --run the report IF handler IS NOT NULL THEN -- report engine was configured ok START REPORT imp_factura TO XML HANDLER HANDLER 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_factura(fact_gral.*,fact_det[idx].*,tot_porc, p_bonifica[idx],cod_fact,kncf,codigodgii,descripcion,observacion,usuarios, fecha_vencimiento) END IF END FOR FINISH REPORT imp_factura # END IF LET fact_gral.factura = factura_old SET CONNECTION "MSSQL" { EVITANDO IMPIMIR EN OTRO PRINTER REMOTO CALL defecto(usuarios,clave,xcopia) RETURNING imprime,negrilla_on,negrillas_of, doble_on,doble_off,comp_on,comp_off, doce,normal,archivo,copia START REPORT imp_fact_ncf 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_fact_ncf(fact_gral.*,fact_det[idx].*,tot_porc, p_bonifica[idx],cod_fact,kncf,codigodgii) END IF END FOR FINISH REPORT imp_fact_ncf RUN imprime} END IF # CLIENTE NCF END IF END IF COMMAND "BuscaTrack" LET selec = "select a.factura_ext from marmotech.dbo.vetb00002 a WHERE a.factura = ? AND a.sucid = ?" PREPARE comando_track FROM selec EXECUTE comando_track INTO factura_xc USING fact_gral.factura,localidad IF factura_xc IS NOT NULL THEN LET selec = "select a.trackid,a.ultima_respuesta,b.codigo_dgii from exterior.dbo.vetb00002 a,exterior.dbo.vetb00072 b WHERE a.factura = ? AND a.sucid = ? AND a.factura = b.documento AND b.tipo_doc = 'FT'" PREPARE comando_track FROM selec EXECUTE comando_track INTO p.trackid,respuesta,codigodgii USING factura_xc,localidad DISPLAY "data desde cons: ",p.trackid," resp: ",respuesta," fe: ",factura_xc TRY LET valor_control_ncf = fact_gral.total_fact * fact_Gral.prima_us IF codigodgii <> 32 THEN CALL procesoEncf(' ',"produccion",' ',0,0,'consultatrackid',respuesta) RETURNING phash,xrespuesta,codigo DISPLAY "estado respuesta: ",CURRENT,xrespuesta," codigo: ",codigo CALL util.JSON.parse(xrespuesta,p) DISPLAY "estado: ",xrespuesta END IF IF codigodgii = '32' AND valor_control_ncf < 250000 THEN # CALL procesoEncf(' ',"test",' ',0,0,'consultatrackid',respuesta) # RETURNING phash,xrespuesta IF codigo = 200 THEN CALL util.JSON.parse(respuesta,p32) LET p.estado = p32.estado LET p.mensajes[1].valor = p32.mensajes ELSE DISPLAY "tomo el P32ERR:",respuesta CALL util.JSON.parse(respuesta,p32err) LET p.estado = p32err.estado LET p.mensajes[1].valor = p32err.mensajes[1].valor END IF # LET p.estado = p1.estado # LET p.secuenciaUtilizada = p1.secuenciaUtilizada # LET p.encf = p1.encf # LET p.mensajes[1].valor = p1.mensajes DISPLAY "estado 32: ",p.estado END IF CATCH LET p.estado = 'ERROR' LET p.mensajes[1].valor ="NO PUDE PARSEAR LA RESPUESTA EN EL PROGRAMA VEPRMT001" END TRY DISPLAY p.mensajes[1].valor TO mensaje_dgii DISPLAY BY NAME p.estado END IF COMMAND "Retornar" CLEAR FORM EXIT MENU END MENU END FUNCTION FUNCTION info() LET pcotizacion = nuLL SELECT a.cotizacion_no INTO pcotizacion FROM prtb00012 a WHERE a.num_oc = fact_gral.orden IF estadofactura = 'ANULADA' THEN DISPLAY BY NAME estadofactura ATTRIBUTE(RED) ELSE DISPLAY BY NAME estadofactura ATTRIBUTE(BLUE) END IF #BUSQUEDA EN EXTERIOR DEL TRACKID Y ESTADO DGII LET selec = "SELECT DISTINCT a.trackid,a.estado_dgii FROM exterior.dbo.vetb00002 a WHERE a.factura_c = ? and a.sucid = ? and a.status_t is null" PREPARE bfactura FROM selec EXECUTE bfactura INTO p.trackid,p.estado USING fact_gral.factura,localidad DISPLAY BY NAME p.trackid,p.estado DISPLAY BY NAME fact_gral.*,factura_e,documento_ref,codigodgii,kncf,descripcion_ncf,proforma, descripcion_Doc,pdocumento_Ref, cliente_bas.us_crea,fcrea,cliente_bas.us_mod,ccrea, pcotizacion DISPLAY factura_xc TO factura1 END FUNCTION FUNCTION buscavend() SELECT nom1_emp, apell1_emp INTO descrip5,descrip6 FROM adtb00003 WHERE num_emp = fact_gral.sec_vend LET fact_gral.nombre_vend = descrip5 clipped," ",descrip6 clipped DISPLAY BY NAME fact_gral.nombre_vend ATTRIBUTE (blue) END FUNCTION FUNCTION datoscliente() SELECT a.nombre,a.limite_credito,a.cod_zona,a.cod_provincia,a.telefono,a.num_rnc INTO fact_gral.nombre,credito,fact_gral.zona,codigo_provincia, cliente_bas.telefono,num_rnc FROM vetb00004 a WHERE a.tipo_cliente = fact_gral.tipo_cliente AND a.sec_cliente = fact_gral.sec_cliente LET pcotizacion = NULL SELECT a.cotizacion_no INTO pcotizacion FROM prtb00012 a WHERE a.num_oc = fact_gral.orden AND a.status_t IS NULL IF fact_gral.direccion IS NULL THEN LET xdireccion_proyecto = NULL SELECT a.nombre_cliente,a.direccion_cliente,a.direccion_proyecto,a.rnc INTO fact_gral.nombre,fact_gral.direccion,xdireccion_proyecto,num_rnc FROM vetb00050 a WHERE a.cotizacion_no = pcotizacion END IF SELECT d.nombre_provincia INTO fact_gral.ciudad FROM vetb00020 d WHERE d.cod_provincia = codigo_provincia SELECT unique descrip INTO descrip1 FROM vetb00008 WHERE cod_zona = CAST(fact_gral.zona as smallint) # BUSCA EL VENDEDOR SOLO SI LA FACTURA NO ES PARA EL OUTLET SELECT a.sec_vend,RTRIM(b.nom1_emp)||' '||RTRIM(b.apell1_emp) INTO fact_gral.sec_vend,fact_gral.nombre_vend FROM prtb00012 a,adtb00003 b WHERE a.tipo_cliente = fact_gral.tipo_cliente AND a.sec_cliente = fact_gral.sec_cliente AND a.num_oc = fact_gral.orden AND a.sec_vend = b.num_emp DISPLAY "rnc ",num_rnc, " ",fact_gral.tipo_cliente," ",fact_gral.sec_cliente DISPLAY BY NAME fact_gral.nombre,num_rnc,cliente_bas.telefono,fact_gral.ciudad, fact_gral.direccion,fact_gral.nombre_vend,fact_gral.sec_vend,num_rnc END FUNCTION FUNCTION imprecibo() WHENEVER ERROR CONTINUE CLOSE FORM captura WHENEVER ERROR STOP OPEN WINDOW captura AT 7,12 WITH FORM "vefmwd013" ATTRIBUTE (BORDER,FORM LINE FIRST + 1,COMMENT LINE LAST) LET pagos.tipo_cliente = fact_gral.tipo_cliente LET pagos.sec_cliente = fact_gral.sec_cliente LET pagos.nombre = fact_gral.nombre LET pagos.direccion = fact_gral.direccion LET pagos.ciudad = NULL LET pagos.fecha_factura = fact_gral.fecha_factura LET pagos.factura = fact_gral.factura LET pagos.valor_cheque = 0 LET pagos.valor_efectivo = fact_gral.total_fact LET pagos.valor_total = fact_gral.total_fact LET pagos.monto_cr = 0 DISPLAY "en recibo: ",localidad," factura ",pagos.factura SELECT a.num_doc,a.valor_efectivo,a.valor_cheque INTO pagos.documento,pagos.valor_efectivo,pagos.valor_cheque FROM cctb00001 a WHERE a.sucid = localidad AND a.aplica_a = pagos.factura AND a.tipo_doc = 'PC' IF STATUS = NOTFOUND THEN CALL msg(3) RETURN END IF SELECT b.calle,b.casa_num,b.barrio INTO descrip1,descrip2,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 SELECT a.simbolo INTO pmoneda FROM vetb00061 a WHERE a.ventas = fact_gral.ventas LET fact_gral.factura = pagos.factura IF pagos.valor_efectivo IS NULL AND pagos.valor_cheque IS NULL THEN LET pagos.valor_efectivo = fact_gral.total_fact END IF DISPLAY BY NAME pagos.* CLOSE WINDOW captura LET opt = fgl_winquestion("RECIBO","IMPRIME RECIBO?","YES","YES|NO","QUESTION",0) IF opt = "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 START REPORT volante TO archivo OUTPUT TO REPORT volante(pagos.*) FINISH REPORT volante RUN imprime END IF END FUNCTION