Search in sources :

Example 1 with Invoice

use of ar.com.ergio.print.fiscal.document.Invoice in project lar_361 by comitsrl.

the class FiscalDocumentPrint method createInvoice.

/**
 * Crea una factura imprimible por el controlador fiscal a partir de la
 * factura oxp parámetro
 *
 * @param mInvoice
 *            factura
 * @return la factura imprimible creada
 */
public Invoice createInvoice(final MInvoice mInvoice) {
    Invoice invoice = new Invoice();
    // Se asigna el cliente.
    invoice.setCustomer(getCustomer(mInvoice.getC_BPartner_ID()));
    // Se asigna la letra de la factura.
    invoice.setLetter(LAR_Utils.getLetter(mInvoice));
    // Se asigna el número de remito en caso de existir.
    // @emmie
    loadShipmentOrderNumbers(mInvoice, invoice);
    // Se agregan las líneas de la factura al documento.
    loadDocumentLines(mInvoice, invoice);
    // Agrega los pagos correspondientes de la factura partir de las imputaciones
    loadInvoicePayments(invoice, mInvoice);
    // loadDocumentDiscounts(invoice, mInvoice.getDiscounts());
    return invoice;
}
Also used : Invoice(ar.com.ergio.print.fiscal.document.Invoice) MInvoice(org.compiere.model.MInvoice)

Example 2 with Invoice

use of ar.com.ergio.print.fiscal.document.Invoice in project lar_361 by comitsrl.

the class FiscalDocumentPrint method printInvoice.

/**
 * Impresión de una factura.
 *
 * @param document
 *            factura imprimible creada a partir del documento oxp, si es
 *            null se crea una nueva a partir del documento oxp que está
 *            configurado. Dentro de este método se realiza un casting del
 *            documento parámetro hacia {@link Invoice} por lo que debe ser
 *            una instancia de esa clase sino se producirá un error en
 *            tiempo de ejecución.
 */
// TODO - Redesign this method
private void printInvoice(final Document document) throws FiscalPrinterStatusError, FiscalPrinterIOException, Exception {
    MInvoice mInvoice = (MInvoice) getOxpDocument();
    // Se valida el documento OXP.
    validateOxpDocument(mInvoice);
    /*
         * @emmie inicio - Impresion remito En caso de tratarse de una venta en
         * ctacte, se imprime el remito asocido a la factura ANTES de imprimir
         * la factura
         */
    final MOrder order = new MOrder(ctx, mInvoice.getC_Order_ID(), getTrxName());
    boolean printShipment = order.get_ValueAsBoolean("PrintShipment");
    if (printShipment && mInvoice.getC_PaymentTerm_ID() == PosOrderModel.PAYMENTTERMS_Account) {
        // Se recupera el remito de la primera linea (se asume 1 remito)
        int m_InOut_ID = mInvoice.getLines()[0].getM_InOutLine().getM_InOut_ID();
        final MInOut shipment = new MInOut(ctx, m_InOut_ID, getTrxName());
        // Crea el documento no-fiscal y luego obtiene todas las líneas del pedido
        final DNFH dnfh = createDNFH(shipment);
        // Se le indica al documento no-fiscal que no finalice la impresión
        dnfh.setPrintEnded(false);
        // Manda a imprimir el documento en la impresora fiscal
        getFiscalPrinter().printDocument(dnfh);
        // Guarda la info devuelta por el controlador
        saveShipmentData(shipment, dnfh);
    }
    // @emmie fin - Impresion remito
    // Se crea la factura imprimible en caso que no exista como parámetro
    final Invoice printeableInvoice;
    if (document != null) {
        printeableInvoice = (Invoice) document;
    } else {
        printeableInvoice = createInvoice(mInvoice);
    }
    // Se manda a imprimir la factura a la impresora fiscal.
    getFiscalPrinter().printDocument(printeableInvoice);
    // Se actualizan los datos de la factura de oxp.
    saveDocumentData(mInvoice, printeableInvoice);
}
Also used : MInOut(org.compiere.model.MInOut) MOrder(org.compiere.model.MOrder) Invoice(ar.com.ergio.print.fiscal.document.Invoice) MInvoice(org.compiere.model.MInvoice) MInvoice(org.compiere.model.MInvoice) DNFH(ar.com.ergio.print.fiscal.document.DNFH)

Example 3 with Invoice

use of ar.com.ergio.print.fiscal.document.Invoice in project lar_361 by comitsrl.

the class FiscalDocumentPrint method saveDocumentData.

/**
 * Devuelve la descripción a imprimir para un pago según un MInvoice.
 */
// private String getInvoicePaymentDescription(MInvoice mInvoice) {
// String description = null;
// // - Nota de Crédito: NC NroNotaCrédito
// //   Ej: NC A000100004567
// if (LAR_MDocType.DOCBASETYPE_ARCreditMemo.equals(MDocType.get(ctx,
// mInvoice.getC_DocType_ID()).getDocBaseType())) {
// description = Msg.translate(ctx, "FiscalTicketCreditNotePayment")
// + " " + mInvoice.getDocumentNo();
// // - Resto de facturas (FP, Retenciones, etc): se toman como "Otros Pagos"
// } else {
// description = Msg.translate(ctx, "FiscalTicketOthersPayment");
// }
// 
// return description;
// }
private void saveDocumentData(final MInvoice mInvoice, final Document printeableDocument) {
    String dtType = printeableDocument.getDocumentType();
    // Solo para facturas, notas de crédito y débito.
    if (dtType.equals(Document.DT_INVOICE) || dtType.equals(Document.DT_CREDIT_NOTE) || dtType.equals(Document.DT_DEBIT_NOTE)) {
        // TODO - Review receipt fiscal number implementation
        // int receiptNo =
        // Integer.parseInt(printeableDocument.getDocumentNo());
        String printedFiscalReceiptNumber = printeableDocument.getDocumentNo();
        // Solo se actualiza el documento de oxp en caso de que el
        // número de comprobante emitido por la impresora fiscal
        // sead distinto al que le había asignado oxp.
        String fiscalReceiptNumber = mInvoice.get_ValueAsString("FiscalReceiptNumber");
        if (printedFiscalReceiptNumber != fiscalReceiptNumber) {
            mInvoice.set_ValueOfColumn("FiscalReceiptNumber", printedFiscalReceiptNumber);
        // Se modifica el número de documento de OXP acorde al número de
        // comprobante fiscal.
        // String documentNo = CalloutInvoiceExt.GenerarNumeroDeDocumento(
        // oxpDocument.getPuntoDeVenta(), receiptNo, oxpDocument.getLetra(), oxpDocument.isSOTrx());
        // oxpDocument.setDocumentNo(documentNo);
        }
        // la impresora haya seteado alguno.
        if (dtType.equals(Document.DT_INVOICE) || dtType.equals(Document.DT_DEBIT_NOTE)) {
            Invoice invoiceOrDN = (Invoice) printeableDocument;
            if (invoiceOrDN.hasCAINumber()) {
                // Se asigna el número del CAI.
                mInvoice.set_ValueOfColumn("CAI", invoiceOrDN.getCAINumber());
                // Se asigna la fecha del CAI como la fecha actual.
                mInvoice.set_ValueOfColumn("CAIDate", new Timestamp(System.currentTimeMillis()));
            }
        }
        // ///////////////////////////////////////////////////////////////
        // -- Documento Impreso por Impresora fiscal --
        // Se marca el documento como impreso fiscalmente para que no pueda
        // volver a imprimirse.
        mInvoice.set_ValueOfColumn("IsFiscalPrinted", true);
        // Se guardan los cambios realizados.
        if (canSaveDocument()) {
            mInvoice.save();
        }
    }
}
Also used : Invoice(ar.com.ergio.print.fiscal.document.Invoice) MInvoice(org.compiere.model.MInvoice) Timestamp(java.sql.Timestamp)

Aggregations

Invoice (ar.com.ergio.print.fiscal.document.Invoice)3 MInvoice (org.compiere.model.MInvoice)3 DNFH (ar.com.ergio.print.fiscal.document.DNFH)1 Timestamp (java.sql.Timestamp)1 MInOut (org.compiere.model.MInOut)1 MOrder (org.compiere.model.MOrder)1