use of ar.com.ergio.print.fiscal.exception.FiscalPrinterIOException in project lar_361 by comitsrl.
the class HasarFiscalPrinter method printDocument.
public void printDocument(final DNFH dnfh) throws FiscalPrinterStatusError, FiscalPrinterIOException, DocumentException {
final Customer customer = dnfh.getCustomer();
FiscalPacket response;
// Se valida la nota de crédito.
dnfh.validate();
try {
setCancelAllowed(false);
// ////////////////////////////////////////////////////////////
// Se setean los datos del comprador.
// Comando: @SetCustomerData
loadCustomerData(customer);
// ////////////////////////////////////////////////////////////
// Se abre un documento no fiscal homologado.
// Comando: @OpenDNFH
execute(cmdOpenDNFH(// no tiene letra
traduceDocumentType(Document.DT_SHIPMENT, dnfh.getLetter()), "x"));
setLastDocumentNo("");
setCancelAllowed(true);
setDocumentOpened(true);
// ////////////////////////////////////////////////////////////
// Se cargan los ítems del remito emitido.
// Comando: @PrintEmbarkItem
loadDocumentEmbarkLineItems(dnfh);
// ////////////////////////////////////////////////////////////
// Se cierra el comprobante no fiscal homologado.
// Comando: @CloseDNFH
response = execute(cmdCloseDNFH(dnfh.getNumberOfCopies()));
setDocumentOpened(false);
setCancelAllowed(false);
// Se obtiene el número del remito emitido.
setLastDocumentNo(response.getString(3));
dnfh.setDocumentNo(getLastDocumentNo());
// si tiene que finalizar la impresión o no
if (dnfh.isPrintEnded())
firePrintEnded();
} catch (FiscalPrinterIOException e) {
// Si ocurrió algún error se intenta cancelar el documento
// actual y se relanza la excepción.
cancelCurrentDocument();
throw e;
}
}
use of ar.com.ergio.print.fiscal.exception.FiscalPrinterIOException in project lar_361 by comitsrl.
the class HasarFiscalPrinter method printDocument.
public void printDocument(CreditNote creditNote) throws FiscalPrinterStatusError, FiscalPrinterIOException, DocumentException {
Customer customer = creditNote.getCustomer();
FiscalPacket response;
// Se valida la nota de crédito.
creditNote.validate();
try {
setCancelAllowed(false);
// ////////////////////////////////////////////////////////////
// Se setea el número de comprobante original.
// Comando: @SetEmbarkNumber
execute(cmdSetEmbarkNumber(1, creditNote.getOriginalDocumentNo()));
// ////////////////////////////////////////////////////////////
// Se setean los datos del comprador.
// Comando: @SetCustomerData
loadCustomerData(customer);
// ////////////////////////////////////////////////////////////
// Se abre un documento no fiscal homologado.
// Comando: @OpenDNFH
execute(cmdOpenDNFH(traduceDocumentType(Document.DT_CREDIT_NOTE, creditNote.getLetter()), "x"));
setLastDocumentNo("");
setCancelAllowed(true);
setDocumentOpened(true);
// Comando: @PrintFiscalText
for (String observation : creditNote.getObservations()) {
execute(cmdPrintFiscalText(observation, null));
}
// ////////////////////////////////////////////////////////////
// Se cargan los ítems de la nota de crédito.
// Comando: @PrintLineItem
loadDocumentLineItems(creditNote);
// ////////////////////////////////////////////////////////////
// Se carga la percepción de la note de crédito
loadDocumentPerception(creditNote);
// ////////////////////////////////////////////////////////////
// Se cierra el comprobante no fiscal homologado.
// Comando: @CloseDNFH
response = execute(cmdCloseDNFH(null));
setDocumentOpened(false);
setCancelAllowed(false);
// Se obtiene el número de la nota de crédito emitida.
setLastDocumentNo(response.getString(3));
creditNote.setDocumentNo(getLastDocumentNo());
// Se indica al manejador de eventos que la impresión ha finalizado.
firePrintEnded();
} catch (FiscalPrinterIOException e) {
// Si ocurrió algún error se intenta cancelar el documento
// actual y se relanza la excepción.
cancelCurrentDocument();
throw e;
}
}
use of ar.com.ergio.print.fiscal.exception.FiscalPrinterIOException in project lar_361 by comitsrl.
the class HasarFiscalPrinter method printDocument.
public void printDocument(DebitNote debitNote) throws FiscalPrinterStatusError, FiscalPrinterIOException, DocumentException {
Customer customer = debitNote.getCustomer();
FiscalPacket response;
// Se valida la nota de débito.
debitNote.validate();
try {
setCancelAllowed(false);
// ////////////////////////////////////////////////////////////
// Se setean los datos del comprador.
// Comando: @SetCustomerData
loadCustomerData(customer);
// Comando: @SetEmbarkNumber
if (debitNote.hasPackingSlipNumber())
execute(cmdSetEmbarkNumber(1, debitNote.getPackingSlipNumber()));
// ////////////////////////////////////////////////////////////
// Se abre el documento fiscal.
// Comando: @OpenFiscalReceipt
response = execute(cmdOpenFiscalReceipt(traduceDocumentType(Document.DT_DEBIT_NOTE, debitNote.getLetter())));
setLastDocumentNo("");
setCancelAllowed(true);
setDocumentOpened(true);
// Comando: @PrintFiscalText
for (String observation : debitNote.getObservations()) {
execute(cmdPrintFiscalText(observation, null));
}
// ////////////////////////////////////////////////////////////
// Se cargan los ítems de la nota de débito.
// Comando: @PrintLineItem
loadDocumentLineItems(debitNote);
// ////////////////////////////////////////////////////////////
// Se carga la percepción de la note de crédito
loadDocumentPerception(debitNote);
// ////////////////////////////////////////////////////////////
// Se cierra el comprobante fiscal.
// Comando: @CloseFiscalReceipt
response = execute(cmdCloseFiscalReceipt(null));
setDocumentOpened(false);
// Se obtiene el número de comprobante emitido.
setLastDocumentNo(response.getString(3));
debitNote.setDocumentNo(getLastDocumentNo());
// Se obtiene el número del CAI.
if (debitNote.getLetter().equals(Document.DOC_LETTER_A))
;
debitNote.setCAINumber(getCAINumber(response));
// Se indica al manejador de eventos que la impresión ha finalizado.
firePrintEnded();
} catch (FiscalPrinterIOException e) {
// Si ocurrió algún error se intenta cancelar el documento
// actual y se relanza la excepción.
cancelCurrentDocument();
throw e;
}
}
use of ar.com.ergio.print.fiscal.exception.FiscalPrinterIOException in project lar_361 by comitsrl.
the class HasarFiscalPrinter method execute.
/**
* Ejecuta un comando fiscal en la impresora y analiza la existencia
* de errores en la respuesta. En caso de que se produzca algún error
* se propagan mediante excepciones.
* @param command Comando a ejecutar.
* @return Retorna un <code>FiscalPacket</code> que contiene la respuesta
* de la impresora.
* @throws FiscalPrinterIOException cuando se producce algún error de
* comunicación con el dispositivo.
* @throws FiscalPrinterStatusError cuando la impresora responde con un
* código de estado de error.
*/
protected FiscalPacket execute(FiscalPacket command) throws FiscalPrinterIOException, FiscalPrinterStatusError {
FiscalPacket response = createFiscalPacket();
// Se guarda el comando como el último ejecutado.
setLastRequest(command);
setLastResponse(null);
try {
// Se envía el comando a la interfaz de comunicación para
// ser ejecutado.
getFiscalComm().execute(command, response);
setLastResponse(response);
} catch (IOException e) {
throw new FiscalPrinterIOException(e.getMessage(), command, response);
}
// Se chequea el status devuelto por la impresora.
boolean statusChanged = checkStatus(response);
// el evento correspondiente.
if (statusChanged) {
fireStatusChanged(command, response);
}
// excepción.
if (getMessages().hasErrors()) {
throw new FiscalPrinterStatusError(command, response, getMessages());
}
// Se informa al manejador que el comando se ejecutó satisfactoriamente.
fireCommandExecuted(command, response);
return response;
}
use of ar.com.ergio.print.fiscal.exception.FiscalPrinterIOException in project lar_361 by comitsrl.
the class HasarFiscalPrinter method checkStatus.
private boolean checkStatus(FiscalPacket response) throws FiscalPrinterIOException {
int newPrinterStatus;
int newFiscalStatus;
try {
// Se obtiene los estados a partir de la respuesta.
newPrinterStatus = response.getPrinterStatus();
newFiscalStatus = response.getFiscalStatus();
} catch (Exception e) {
// respuesta.
throw new FiscalPrinterIOException(MsgRepository.get("ResponseFormatError"), getLastRequest(), response);
}
// Se comprueba si el status fue modificado.
boolean stsChanged = getPrinterStatus() != newPrinterStatus || getFiscalStatus() != newFiscalStatus;
// Se asignan los estados de impresora y controlador fiscal.
setPrinterStatus(newPrinterStatus);
setFiscalStatus(newFiscalStatus);
FiscalMessages msgs = new FiscalMessages();
// Se chequea el estado del controlador fiscal.
for (int i = 0; i < getFiscalStatusCodes().length; i++) {
int statusCode = getFiscalStatusCodes()[i];
if ((getFiscalStatus() & statusCode) != 0) {
FiscalMessage msg = getFiscalStatusMsgs().get(statusCode);
msgs.add(msg);
}
}
// Se chequea el estado de la impresora.
for (int i = 0; i < getPrinterStatusCodes().length; i++) {
int statusCode = getPrinterStatusCodes()[i];
if ((getPrinterStatus() & statusCode) != 0) {
FiscalMessage msg = getPrinterStatusMsgs().get(statusCode);
msgs.add(msg);
}
// setea el mismo.
if (statusCode == PST_JOURNAL_PAPER_OUT || statusCode == PST_TICKET_PAPER_OUT)
setWithoutPaper((getPrinterStatus() & statusCode) != 0);
}
// Se setean los mensajes de la impresora.
setMessages(msgs);
return stsChanged;
}
Aggregations