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;
}
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);
}
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();
}
}
}