/****************************************************************************** * Product: Adempiere ERP & CRM Smart Business Solution * * Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify it * * under the terms version 2 of the GNU General Public License as published * * by the Free Software Foundation. This program is distributed in the hope * * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * * with this program; if not, write to the Free Software Foundation, Inc., * * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * * For the text or an alternative of this public license, you may reach us * * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * * or via info@compiere.org or http://www.compiere.org/license.html * *****************************************************************************/ package org.compiere.process; import java.io.File; import java.math.BigDecimal; import java.util.Properties; import java.util.logging.Level; import org.compiere.model.MDocType; import org.compiere.model.ModelValidationEngine; import org.compiere.model.ModelValidator; import org.compiere.model.PO; import org.compiere.model.POInfo; /** * Template for DocAction * * Instead of modifying DocumentEngine, you could simply extend DocOptions interface and use customizeValidActions * @author Jorg Janke * @version $Id: DocActionTemplate.java,v 1.3 2006/07/30 00:54:44 jjanke Exp $ * @deprecated not fully implemented */ @Deprecated public class DocActionTemplate extends PO implements DocAction { /** * */ private static final long serialVersionUID = -7588955558162632796L; /** * DocActionTemplate */ private DocActionTemplate() { super((Properties)null); } // DocActionTemplate /** * Init PO * @param ctx ctx * @return null */ protected POInfo initPO (Properties ctx) { return null; } // initPO protected int get_AccessLevel () { return 0; } /** * Get Document Info * @return document info (untranslated) */ public String getDocumentInfo() { MDocType dt = MDocType.get(getCtx(), 0); return dt.getNameTrl() + " " + getDocumentNo(); } // getDocumentInfo /** * Create PDF * @return File or null */ public File createPDF () { try { File temp = File.createTempFile(get_TableName()+get_ID()+"_", ".pdf"); return createPDF (temp); } catch (Exception e) { log.severe("Could not create PDF - " + e.getMessage()); } return null; } // getPDF /** * Create PDF file * @param file output file * @return file if success */ public File createPDF (File file) { // ReportEngine re = ReportEngine.get (getCtx(), ReportEngine.INVOICE, getC_Invoice_ID()); // if (re == null) return null; // return re.getPDF(file); } // createPDF /************************************************************************** * Process document * @param processAction document action * @return true if performed */ public boolean processIt (String processAction) { m_processMsg = null; DocumentEngine engine = new DocumentEngine (this, getDocStatus()); return engine.processIt (processAction, getDocAction()); } // processIt /** Process Message */ private String m_processMsg = null; /** Just Prepared Flag */ private boolean m_justPrepared = false; /** * Unlock Document. * @return true if success */ public boolean unlockIt() { if (log.isLoggable(Level.INFO)) log.info("unlockIt - " + toString()); // setProcessing(false); return true; } // unlockIt /** * Invalidate Document * @return true if success */ public boolean invalidateIt() { if (log.isLoggable(Level.INFO)) log.info("invalidateIt - " + toString()); // setDocAction(DOCACTION_Prepare); return true; } // invalidateIt /** * Prepare Document * @return new status (In Progress or Invalid) */ public String prepareIt() { if (log.isLoggable(Level.INFO)) log.info(toString()); m_processMsg = ModelValidationEngine.get().fireDocValidate(this, ModelValidator.TIMING_BEFORE_PREPARE); if (m_processMsg != null) return DocAction.STATUS_Invalid; /** MDocType dt = MDocType.get(getCtx(), getC_DocTypeTarget_ID()); // Std Period open? if (!MPeriod.isOpen(getCtx(), getDateAcct(), dt.getDocBaseType())) { m_processMsg = "@PeriodClosed@"; return DocAction.STATUS_Invalid; } MLine[] lines = getLines(false); if (lines.length == 0) { m_processMsg = "@NoLines@"; return DocAction.STATUS_Invalid; } **/ // Add up Amounts m_processMsg = ModelValidationEngine.get().fireDocValidate(this, ModelValidator.TIMING_AFTER_PREPARE); if (m_processMsg != null) return DocAction.STATUS_Invalid; m_justPrepared = true; // if (!DOCACTION_Complete.equals(getDocAction())) // setDocAction(DOCACTION_Complete); return DocAction.STATUS_InProgress; } // prepareIt /** * Approve Document * @return true if success */ public boolean approveIt() { if (log.isLoggable(Level.INFO)) log.info("approveIt - " + toString()); // setIsApproved(true); return true; } // approveIt /** * Reject Approval * @return true if success */ public boolean rejectIt() { if (log.isLoggable(Level.INFO)) log.info("rejectIt - " + toString()); // setIsApproved(false); return true; } // rejectIt /** * Complete Document * @return new status (Complete, In Progress, Invalid, Waiting ..) */ public String completeIt() { // Re-Check if (!m_justPrepared) { String status = prepareIt(); m_justPrepared = false; if (!DocAction.STATUS_InProgress.equals(status)) return status; } // setDefiniteDocumentNo(); m_processMsg = ModelValidationEngine.get().fireDocValidate(this, ModelValidator.TIMING_BEFORE_COMPLETE); if (m_processMsg != null) return DocAction.STATUS_Invalid; // Implicit Approval // if (!isApproved()) approveIt(); if (log.isLoggable(Level.INFO)) log.info(toString()); // // User Validation String valid = ModelValidationEngine.get().fireDocValidate(this, ModelValidator.TIMING_AFTER_COMPLETE); if (valid != null) { m_processMsg = valid; return DocAction.STATUS_Invalid; } // setProcessed(true); // setDocAction(DOCACTION_Close); return DocAction.STATUS_Completed; } // completeIt /** * Set the definite document number after completed */ /* private void setDefiniteDocumentNo() { MDocType dt = MDocType.get(getCtx(), getC_DocType_ID()); if (dt.isOverwriteDateOnComplete()) { setDateInvoiced(TimeUtil.getDay(0)); if (getDateAcct().before(getDateInvoiced())) { setDateAcct(getDateInvoiced()); MPeriod.testPeriodOpen(getCtx(), getDateAcct(), getC_DocType_ID(), getAD_Org_ID()); } } if (dt.isOverwriteSeqOnComplete()) { String value = null; int index = p_info.getColumnIndex("C_DocType_ID"); if (index == -1) index = p_info.getColumnIndex("C_DocTypeTarget_ID"); if (index != -1) // get based on Doc Type (might return null) value = DB.getDocumentNo(get_ValueAsInt(index), get_TrxName(), true); if (value != null) { setDocumentNo(value); } } } */ /** * Void Document. * Same as Close. * @return true if success */ public boolean voidIt() { if (log.isLoggable(Level.INFO)) log.info("voidIt - " + toString()); return closeIt(); } // voidIt /** * Close Document. * Cancel not delivered Qunatities * @return true if success */ public boolean closeIt() { if (log.isLoggable(Level.INFO)) log.info("closeIt - " + toString()); // Close Not delivered Qty // setDocAction(DOCACTION_None); return true; } // closeIt /** * Reverse Correction * @return true if success */ public boolean reverseCorrectIt() { if (log.isLoggable(Level.INFO)) log.info("reverseCorrectIt - " + toString()); return false; } // reverseCorrectionIt /** * Reverse Accrual - none * @return true if success */ public boolean reverseAccrualIt() { if (log.isLoggable(Level.INFO)) log.info("reverseAccrualIt - " + toString()); return false; } // reverseAccrualIt /** * Re-activate * @return true if success */ public boolean reActivateIt() { if (log.isLoggable(Level.INFO)) log.info("reActivateIt - " + toString()); // setProcessed(false); if (reverseCorrectIt()) return true; return false; } // reActivateIt /************************************************************************* * Get Summary * @return Summary of Document */ public String getSummary() { StringBuilder sb = new StringBuilder(); // sb.append(getDocumentNo()); // : Total Lines = 123.00 (#1) // sb.append(": ") // .append(Msg.translate(getCtx(),"TotalLines")).append("=").append(getTotalLines()) // .append(" (#").append(getLines(false).length).append(")"); // - Description // if (getDescription() != null && getDescription().length() > 0) // sb.append(" - ").append(getDescription()); return sb.toString(); } // getSummary /** * Get Document no * @return Document No */ public String getDocumentNo() { return "-"; } // getDocumentNo /** * Get Process Message * @return clear text error message */ public String getProcessMsg() { return m_processMsg; } // getProcessMsg /** * Get Document Owner (Responsible) * @return AD_User_ID */ public int getDoc_User_ID() { // return getSalesRep_ID(); return 0; } // getDoc_User_ID /** * Get Document Approval Amount * @return amount */ public BigDecimal getApprovalAmt() { return null; //getTotalLines(); } // getApprovalAmt /** * Get Document Currency * @return C_Currency_ID */ public int getC_Currency_ID() { // MPriceList pl = MPriceList.get(getCtx(), getM_PriceList_ID()); // return pl.getC_Currency_ID(); return 0; } // getC_Currency_ID /** * Set Doc Status * @param newStatus status */ public void setDocStatus (String newStatus) { } /** * Get Doc Status * @return doc status */ public String getDocStatus () { return null; } /** * Get Doc Action * @return doc action */ public String getDocAction () { return null; } /** * Save * @return true if saved */ public boolean save () { return false; } } // DocActionTemplate