📄 mjournal.java
字号:
public String prepareIt()
{
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_DocType_ID());
// Get Period
MPeriod period = MPeriod.get (getCtx(), getDateAcct());
if (period == null)
{
log.warning("No Period for " + getDateAcct());
m_processMsg = "@PeriodNotFound@";
return DocAction.STATUS_Invalid;
}
// Standard Period
if (period.getC_Period_ID() != getC_Period_ID()
&& period.isStandardPeriod())
{
m_processMsg = "@PeriodNotValid@";
return DocAction.STATUS_Invalid;
}
boolean open = period.isOpen(dt.getDocBaseType());
if (!open)
{
log.warning(period.getName()
+ ": Not open for " + dt.getDocBaseType() + " (" + getDateAcct() + ")");
m_processMsg = "@PeriodClosed@";
return DocAction.STATUS_Invalid;
}
// Lines
MJournalLine[] lines = getLines(true);
if (lines.length == 0)
{
m_processMsg = "@NoLines@";
return DocAction.STATUS_Invalid;
}
// Add up Amounts
BigDecimal AmtSourceDr = Env.ZERO;
BigDecimal AmtSourceCr = Env.ZERO;
for (int i = 0; i < lines.length; i++)
{
MJournalLine line = lines[i];
if (!isActive())
continue;
//
if (line.isDocControlled())
{
m_processMsg = "@DocControlledError@ - @Line@=" + line.getLine()
+ " - " + line.getAccountElementValue();
return DocAction.STATUS_Invalid;
}
//
AmtSourceDr = AmtSourceDr.add(line.getAmtSourceDr());
AmtSourceCr = AmtSourceCr.add(line.getAmtSourceCr());
}
setTotalDr(AmtSourceDr);
setTotalCr(AmtSourceCr);
// Control Amount
if (Env.ZERO.compareTo(getControlAmt()) != 0
&& getControlAmt().compareTo(getTotalDr()) != 0)
{
m_processMsg = "@ControlAmtError@";
return DocAction.STATUS_Invalid;
}
// Unbalanced Jornal & Not Suspense
if (AmtSourceDr.compareTo(AmtSourceCr) != 0)
{
MAcctSchemaGL gl = MAcctSchemaGL.get(getCtx(), getC_AcctSchema_ID());
if (gl == null || !gl.isUseSuspenseBalancing())
{
m_processMsg = "@UnbalancedJornal@";
return DocAction.STATUS_Invalid;
}
}
if (!DOCACTION_Complete.equals(getDocAction()))
setDocAction(DOCACTION_Complete);
m_justPrepared = true;
return DocAction.STATUS_InProgress;
} // prepareIt
/**
* Approve Document
* @return true if success
*/
public boolean approveIt()
{
log.info(toString());
setIsApproved(true);
return true;
} // approveIt
/**
* Reject Approval
* @return true if success
*/
public boolean rejectIt()
{
log.info(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();
if (!DocAction.STATUS_InProgress.equals(status))
return status;
}
// Implicit Approval
if (!isApproved())
approveIt();
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
/**
* Void Document.
* @return true if success
*/
public boolean voidIt()
{
log.info(toString());
if (DOCSTATUS_Drafted.equals(getDocStatus())
|| DOCSTATUS_Invalid.equals(getDocStatus()))
{
setProcessed(true);
setDocAction(DOCACTION_None);
return true;
}
return false;
} // voidIt
/**
* Close Document.
* Cancel not delivered Qunatities
* @return true if success
*/
public boolean closeIt()
{
log.info(toString());
if (DOCSTATUS_Completed.equals(getDocStatus()))
{
setProcessed(true);
setDocAction(DOCACTION_None);
return true;
}
return false;
} // closeIt
/**
* Reverse Correction (in same batch).
* As if nothing happened - same date
* @return true if success
*/
public boolean reverseCorrectIt()
{
return reverseCorrectIt(getGL_JournalBatch_ID()) != null;
} // reverseCorrectIt
/**
* Reverse Correction.
* As if nothing happened - same date
* @param GL_JournalBatch_ID reversal batch
* @return reversed Journal or null
*/
public MJournal reverseCorrectIt (int GL_JournalBatch_ID)
{
log.info(toString());
// Journal
MJournal reverse = new MJournal (this);
reverse.setGL_JournalBatch_ID(GL_JournalBatch_ID);
reverse.setDateDoc(getDateDoc());
reverse.setC_Period_ID(getC_Period_ID());
reverse.setDateAcct(getDateAcct());
// Reverse indicator
String description = reverse.getDescription();
if (description == null)
description = "** " + getDocumentNo() + " **";
else
description += " ** " + getDocumentNo() + " **";
reverse.setDescription(description);
if (!reverse.save())
return null;
// Lines
reverse.copyLinesFrom(this, null, 'C');
//
setProcessed(true);
setDocAction(DOCACTION_None);
return reverse;
} // reverseCorrectionIt
/**
* Reverse Accrual (sane batch).
* Flip Dr/Cr - Use Today's date
* @return true if success
*/
public boolean reverseAccrualIt()
{
return reverseAccrualIt (getGL_JournalBatch_ID()) != null;
} // reverseAccrualIt
/**
* Reverse Accrual.
* Flip Dr/Cr - Use Today's date
* @param GL_JournalBatch_ID reversal batch
* @return reversed journal or null
*/
public MJournal reverseAccrualIt (int GL_JournalBatch_ID)
{
log.info(toString());
// Journal
MJournal reverse = new MJournal (this);
reverse.setGL_JournalBatch_ID(GL_JournalBatch_ID);
reverse.setC_Period_ID(0);
reverse.setDateDoc(new Timestamp(System.currentTimeMillis()));
reverse.setDateAcct(reverse.getDateDoc());
// Reverse indicator
String description = reverse.getDescription();
if (description == null)
description = "** " + getDocumentNo() + " **";
else
description += " ** " + getDocumentNo() + " **";
reverse.setDescription(description);
if (!reverse.save())
return null;
// Lines
reverse.copyLinesFrom(this, reverse.getDateAcct(), 'R');
//
setProcessed(true);
setDocAction(DOCACTION_None);
return reverse;
} // reverseAccrualIt
/**
* Re-activate
* @return true if success
*/
public boolean reActivateIt()
{
log.info(toString());
return false;
} // reActivateIt
/*************************************************************************
* Get Summary
* @return Summary of Document
*/
public String getSummary()
{
StringBuffer sb = new StringBuffer();
sb.append(getDocumentNo());
// : Total Lines = 123.00 (#1)
sb.append(": ")
.append(Msg.translate(getCtx(),"TotalDr")).append("=").append(getTotalDr())
.append(" ")
.append(Msg.translate(getCtx(),"TotalCR")).append("=").append(getTotalCr())
.append(" (#").append(getLines(false).length).append(")");
// - Description
if (getDescription() != null && getDescription().length() > 0)
sb.append(" - ").append(getDescription());
return sb.toString();
} // getSummary
/**
* String Representation
* @return info
*/
public String toString ()
{
StringBuffer sb = new StringBuffer ("MJournal[");
sb.append(get_ID()).append(",").append(getDescription())
.append(",DR=").append(getTotalDr())
.append(",CR=").append(getTotalCr())
.append ("]");
return sb.toString ();
} // toString
/**
* Get Document Info
* @return document info (untranslated)
*/
public String getDocumentInfo()
{
MDocType dt = MDocType.get(getCtx(), getC_DocType_ID());
return dt.getName() + " " + 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
/**
* Get Process Message
* @return clear text error message
*/
public String getProcessMsg()
{
return m_processMsg;
} // getProcessMsg
/**
* Get Document Owner (Responsible)
* @return AD_User_ID (Created)
*/
public int getDoc_User_ID()
{
return getCreatedBy();
} // getDoc_User_ID
/**
* Get Document Approval Amount
* @return DR amount
*/
public BigDecimal getApprovalAmt()
{
return getTotalDr();
} // getApprovalAmt
} // MJournal
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -