use of org.compiere.apps.SwingWorker in project lar_361 by comitsrl.
the class PosBasePanel method voidDocuments.
/**
* Invoca la anulación de los documentos generados debido a un error en la
* impresión fiscal
*/
private void voidDocuments() {
SwingWorker worker = new SwingWorker() {
private String errorMsg = null;
@Override
public Object construct() {
// Crea parámetro que se enviará al proceso
final ProcessInfoParameter param = new ProcessInfoParameter("C_Order_ID", m_order.getC_Order_ID(), "", "", "");
// Crea información del proceso
int AD_Process_ID = 3000037;
final ProcessInfo pi = new ProcessInfo("PosOrderGlobalVoiding", AD_Process_ID);
pi.setParameter(new ProcessInfoParameter[] { param });
// Crea una instancia de proceso (para registro y sincronizacion)
final MPInstance pinstance = new MPInstance(m_ctx, 0, null);
pinstance.setAD_Process_ID(AD_Process_ID);
pinstance.setRecord_ID(0);
pinstance.save();
// Conecta el proceso con la instancia de proceso
pi.setAD_PInstance_ID(pinstance.get_ID());
// Crea el proceso a ejecutar
final PosOrderGlobalVoiding process = new PosOrderGlobalVoiding();
log.info("Iniciando proceso global de anulaci\u00f3n");
return process.startProcess(m_ctx, pi, null);
}
@Override
public void finished() {
boolean success = (Boolean) getValue();
if (!success) {
ADialog.error(getWindowNo(), PosBasePanel.this, errorMsg);
if (ADialog.ask(getWindowNo(), PosBasePanel.this, Msg.parseTranslation(m_ctx, "@RetryVoidInvoice@"))) {
// Re intenta anular los documentos.
voidDocuments();
} else {
newOrder();
stopGlassPane();
}
} else {
newOrder();
stopGlassPane();
}
}
};
// new SwingWorker
startGlassPane("VoidingInvoice");
worker.start();
}
Aggregations