Search in sources :

Example 1 with FiscalPrinterIOException

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;
    }
}
Also used : Customer(ar.com.ergio.print.fiscal.document.Customer) FiscalPrinterIOException(ar.com.ergio.print.fiscal.exception.FiscalPrinterIOException) FiscalPacket(ar.com.ergio.print.fiscal.FiscalPacket)

Example 2 with FiscalPrinterIOException

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;
    }
}
Also used : Customer(ar.com.ergio.print.fiscal.document.Customer) FiscalPrinterIOException(ar.com.ergio.print.fiscal.exception.FiscalPrinterIOException) FiscalPacket(ar.com.ergio.print.fiscal.FiscalPacket)

Example 3 with FiscalPrinterIOException

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;
    }
}
Also used : Customer(ar.com.ergio.print.fiscal.document.Customer) FiscalPrinterIOException(ar.com.ergio.print.fiscal.exception.FiscalPrinterIOException) FiscalPacket(ar.com.ergio.print.fiscal.FiscalPacket)

Example 4 with FiscalPrinterIOException

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;
}
Also used : FiscalPrinterIOException(ar.com.ergio.print.fiscal.exception.FiscalPrinterIOException) FiscalPacket(ar.com.ergio.print.fiscal.FiscalPacket) IOException(java.io.IOException) FiscalPrinterIOException(ar.com.ergio.print.fiscal.exception.FiscalPrinterIOException) FiscalPrinterStatusError(ar.com.ergio.print.fiscal.exception.FiscalPrinterStatusError)

Example 5 with FiscalPrinterIOException

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;
}
Also used : FiscalPrinterIOException(ar.com.ergio.print.fiscal.exception.FiscalPrinterIOException) FiscalMessages(ar.com.ergio.print.fiscal.msg.FiscalMessages) FiscalMessage(ar.com.ergio.print.fiscal.msg.FiscalMessage) IOException(java.io.IOException) FiscalPrinterIOException(ar.com.ergio.print.fiscal.exception.FiscalPrinterIOException) DocumentException(ar.com.ergio.print.fiscal.exception.DocumentException)

Aggregations

FiscalPrinterIOException (ar.com.ergio.print.fiscal.exception.FiscalPrinterIOException)6 FiscalPacket (ar.com.ergio.print.fiscal.FiscalPacket)5 Customer (ar.com.ergio.print.fiscal.document.Customer)4 IOException (java.io.IOException)2 Payment (ar.com.ergio.print.fiscal.document.Payment)1 DocumentException (ar.com.ergio.print.fiscal.exception.DocumentException)1 FiscalPrinterStatusError (ar.com.ergio.print.fiscal.exception.FiscalPrinterStatusError)1 FiscalMessage (ar.com.ergio.print.fiscal.msg.FiscalMessage)1 FiscalMessages (ar.com.ergio.print.fiscal.msg.FiscalMessages)1