Holas. Estoy programando en D6 y utilizo el ocx de hasar.Mi problema es el sig: tengo un procedimiento al cual llamo para imprimir la factura en una impresora Hasar 330. el procedimiento es mas o menos asi.
Código Delphi
[-]
procedure TImpresoraFiscal.ImprimeFiscal;
begin
hasar1.Modelo:=8;
hasar1.Puerto:=1;
hasar1.ConfigurarControlador(REIMPRESION_CANCELADOS,'false');
hasar1.ConfigurarControlador(IMPRESION_LEYENDAS,'true');
hasar1.PrecioBase:=true;
hasar1.DatosCliente(nombre,numdoc,TIPO_CUIT,RESPONSABLE_INSCRIPTO,domi);
hasar1.AbrirComprobanteFiscal(FACTURA_A);
if not hasar1.HuboErrorFiscal then
begin
Query1.First;
while not Query1.Eof do
begin
descri:=Query1.FieldByName('descri').AsString;
cant:=Query1.FieldByName('cant').AsFloat;
monto:=Query1.FieldByName('monto').AsFloat;
iva:=Query1.FieldByName('iva').AsFloat;
impint:=Query1.FieldByName('impint').AsFloat;
hasar1.ImprimirItem(descri,cant,monto,iva,impint);
if hasar1.HuboErrorFiscal then
MessageDlg('error en: '+descri+' '+floattostr(cant)+' '+floattostr(monto)+' '+floattostr(iva), mtWarning, [mbOK], 0);
Query1.Next;
end;
hasar1.Subtotal(true);
hasar1.EspecificarPercepcionGlobal('Percepcion Ingr. Brutos',ingrbrut);
hasar1.ImprimirPago(condicionventa,total);
hasar1.CerrarComprobanteFiscal;
facturanumero:=inttostr(strtoint(hasar1.Respuesta[3]));
end
else
begin
MessageDlg('Verifique los Datos del Cliente', mtError, [mbOK], 0);
end;
hasar1.Finalizar;
end;
la cuestion es que, muy aleatoriamente, no siempre, algunos items de la factura que ya tengo guardada en la base de datos no los imprime. Tampoco me da ningun mensaje de error. Ademas despues de imprimir la factura se imprime el remito con un procedimiento similar y en ese caso siempre salen bien. Creo que puede ser algun problema de velocidad del puerto serie, pero no estoy muy seguro y tampoco se como podria verificar eso.
Si alguien pudiera guiarme un poco estaria muy agradecido. Saludos