package org.compiere.acct;
import java.math.BigDecimal;
import java.sql.ResultSet;
import java.util.ArrayList;
import org.compiere.model.MAccount;
import org.compiere.model.MAcctSchema;
import org.compiere.model.MAssetTransfer;
import org.compiere.model.MDepreciationWorkfile;
import org.compiere.model.MDocType;
import org.compiere.util.Env;
/**
* Posting for {@link MAssetTransfer} document. DOCBASETYPE_GLJournal.
* @author Anca Bradau www.arhipac.ro
*/
public class Doc_AssetTransfer extends Doc
{
public Doc_AssetTransfer (MAcctSchema as, ResultSet rs, String trxName)
{
super(as, MAssetTransfer.class, rs, MDocType.DOCBASETYPE_GLJournal, trxName);
}
@Override
protected String loadDocumentDetails()
{
return null;
}
@Override
public BigDecimal getBalance() {
return Env.ZERO;
}
/**
* Produce posting:
*
* 20.., 21..[A_Asset_New_Acct] = 23..[A_Asset_Acct]
*
*/
@Override
public ArrayList createFacts(MAcctSchema as)
{
MAssetTransfer assetTr = getAssetTransfer();
MDepreciationWorkfile wk = getAssetWorkfile();
ArrayList facts = new ArrayList();
Fact fact = new Fact(this, as, assetTr.getPostingType());
facts.add(fact);
//
// Change Asset Account
if (assetTr.getA_Asset_New_Acct() != assetTr.getA_Asset_Acct())
{
MAccount dr = MAccount.get(getCtx(), assetTr.getA_Asset_New_Acct());
MAccount cr = MAccount.get(getCtx(), assetTr.getA_Asset_Acct());
FactUtil.createSimpleOperation(fact, null, dr, cr, as.getC_Currency_ID(),
wk.getA_Asset_Cost(), false);
}
//
// Change Asset Accum. Depr. Account
if (assetTr.getA_Accumdepreciation_New_Acct() != assetTr.getA_Accumdepreciation_Acct())
{
MAccount cr = MAccount.get(getCtx(), assetTr.getA_Accumdepreciation_New_Acct());
MAccount dr = MAccount.get(getCtx(), assetTr.getA_Accumdepreciation_Acct());
FactUtil.createSimpleOperation(fact, null, dr, cr, as.getC_Currency_ID(),
wk.getA_Accumulated_Depr(), false);
}
//
return facts;
}
/**
* @return MAssetTransfer
*/
private MAssetTransfer getAssetTransfer()
{
return (MAssetTransfer)getPO();
}
/**
* @return MDepreciationWorkfile
*/
private MDepreciationWorkfile getAssetWorkfile()
{
MAssetTransfer assetTr = getAssetTransfer();
return MDepreciationWorkfile.get(getCtx(), assetTr.getA_Asset_ID(), assetTr.getPostingType(), getTrxName());
}
}