PRE-FORM ... Venpel.Inicializar(Operacion.Pcia, Operacion.pCaja, Operacion.Pdia); POST-FORM ... VenPel.liberar; VENPAGOVALORES: PISTA2 V2(40), RESPUESTA V2(2):='NO'; PACKAGE PISTA IS PROCEDURE PARTIR(PCUENTA IN OUT VARCHAR2, PNOMBRE IN OUT VARCHAR2, PVENCE IN OUT DATE); PROCEDURE PISTA2(PBENE IN OUT VARCHAR2, PPISTA IN OUT VARCHAR2); END; PAQUETES: PACKAGE BODY PISTA IS VSTRINI VARCHAR2(2):='%B'; VSTRSEP VARCHAR2(1):='&'; Function ExtraeCampo(ptrama in varchar2, pini in out number) return varchar2 is vfin number(3); vini number(3); Begin vini:=pini; vfin:=instr(ptrama||Vstrsep, Vstrsep, pini); pini:=vfin+1; return substr(ptrama, vini, vfin-vini); end; PROCEDURE PARTIR(PCuenta IN OUT VARCHAR2, PNOMBRE IN OUT VARCHAR2, PVENCE IN OUT DATE) IS Vini number(2); Vcuenta varchar2(25); BEGIN IF SUBSTR(PCUENTA,1,LENGTH(VSTRINI))=VSTRINI THEN Vini:=length(vstrini)+1; Vcuenta:=ExtraeCampo(Pcuenta, vini); Pnombre:=ExtraeCampo(Pcuenta, vini); Pvence:=to_date(substr(Pcuenta, vini, 4),'YYMM'); Pcuenta:=Vcuenta; END IF; END; PROCEDURE PISTA2(PBENE IN OUT VARCHAR2, PPISTA IN OUT VARCHAR2) IS aux varchar2(60); begin aux:=Pbene; Pbene:=Ppista; Ppista:=replace(aux,chr(191),'='); end; END; CUENTA WVI: :venpagovalores.pista2:=null; pista.partir(:venpagovalores.cuenta, :venpagovalores.pista2, :venpagovalores.fecha); ... DESCRIPCION WVI: if :pista2 is not null then Pista.Pista2(:venpagovalores.descripcion, :venpagovalores.pista2); end if; ... MONTO WVI: ... if :Venpagovalores.clase='T' and (Venpel.TipoTarjeta(:Venpagovalores.cuenta) is null or not VenPel.TerminalActiva) then Despliega_alerta('AVISO: Debe proceder a la verificación manual de esta tarjeta.'); end if; *** VENPAGOVALORES WVR: ... if :Venpagovalores.clase='T' and Venpel.TipoTarjeta(:Venpagovalores.cuenta) is not null and VenPel.TerminalActiva and :venpagovalores.respuesta!='00' then VenPel.Autorizacion(:venfactura.cliente, :Venpagovalores.descripcion, :Venpagovalores.cuenta, :Venpagovalores.fecha, :Venpagovalores.pista2, :Venpagovalores.monto, :Venpagovalores.referencia, :Venpagovalores.respuesta); while :Venpagovalores.respuesta='TO' loop begin if Acepta_Alerta('AVISO: La consulta de tarjeta aún no tiene respuesta. Desea intentar una ves más?')='S' then VenPel.ReintenteRespuesta(:Venpagovalores.respuesta, 'A'); else :Venpagovalores.respuesta:='NO'; end if; exception when others then :Venpagovalores.respuesta:='NO'; end; end loop; if :Venpagovalores.respuesta='00' then impvou.imprimirtiq(Operacion.pCia, Operacion.pCaja, :Venpagovalores.referencia); else Despliega_error('ERROR: La consulta de tarjeta falló con el codigo ('||:Venpagovalores.respuesta||')'); end if; end if; VENPAGOVALORES PI y PU: elsif :venpagovalores.clase='T' and VenPel.TerminalActiva and Venpel.TipoTarjeta(:Venpagovalores.cuenta) is not null then VenPel.AnotaPago(:venpagovalores.referencia, :venpagovalores.documento); VENPAGOVALORES PQ: :venpagovalores.respuesta:='00'; VENPAGOVALORES.REFERENCIA: Atar menu despleglable VOUCHER. VenImp.pll: PACKAGE IMPVOU IS vNomRep varchar2(256); Vterminal venpelcaja.terminal%type; Vcomercio venpelcomercio.comercio%type; Procedure ImprimirTiq(Vcia in varchar2, Vcaja in varchar2, Vdoc in number, VrotuloCop in varchar2 default null, Vpreview in boolean default false); END; PACKAGE BODY IMPVOU IS Procedure ImprimirTiq(Vcia in varchar2, Vcaja in varchar2, Vdoc in number, VrotuloCop in varchar2 default null, Vpreview in boolean default false) is cursor auts is select documento, consecutivo, cliente, nombre, decode(mensaje,'A','VENTA','REVERSION') mensaje, tarjeta, vence, fecha, referencia, autorizacion, monto from venpeloperacion where cia=Vcia and caja=Vcaja and documento=Vdoc and estado in ('A','R') and respuesta='00'; BEGIN for a in auts loop reporte.InitReport(VnomRep,'Voucher'); reporte.agrItem(0, 2, 'Terminal I.D.: '||venpel.TerminalCaja(vcia, vcaja)); reporte.agrItem(0, 3, 'Comercio: '||vComercio); reporte.agrItem(0, 4, VenPel.TipoTarjeta(a.tarjeta)); reporte.agrItem(0, 5, lpad(substr(a.Tarjeta,1,4),length(a.tarjeta),'*')); reporte.agrItem(0, 6, a.mensaje||' '||vRotuloCop); reporte.agrItem(0, 7, '#Docum.: '||a.documento); reporte.agrItem(0, 8, 'Factura: '||a.consecutivo); reporte.agrItem(0, 9, 'Fecha: '||to_char(a.Fecha,'DD/MM/YY')); reporte.agrItem(0, 10, 'Hora: '||to_char(a.fecha,'HH24:MI')); reporte.agrItem(0, 11, 'RRN: '||a.referencia); reporte.agrItem(0, 12, 'Auto: '||a.Autorizacion); reporte.agrItem(0, 14, to_char(a.monto,'999G999G990D00')); reporte.agrItem(0, 15, 'FIRMA: __________________________ '); reporte.agrItem(0, 16, a.nombre); reporte.agrItem(0, 17, ' '||VrotuloCop); reporte.agrItem(1, 0, ' '); if Vpreview then Reporte.previewRep; else Reporte.printRep; end if; reporte.agrItem(0, 15, 'Copia Cliente'); if Vpreview then Reporte.previewRep; else Reporte.printRep; end if; end loop; END ImprimirTiq; BEGIN vNomRep:=TextLog.MakePath(ValGen.pDirtra, 'repvoucher.txt'); Vterminal:=VenPel.ObtTerminal; Vcomercio:=VenPel.ObtComercio; END; Copiar a runtime repvoucher.txt