📄 doc.java
字号:
} // isPeriodOpen
/*************************************************************************/
/** Amount Type - Invoice */
public static final int AMTTYPE_Gross = 0;
public static final int AMTTYPE_Net = 1;
public static final int AMTTYPE_Charge = 2;
/** Source Amounts (may not all be used) */
private BigDecimal[] m_Amounts = new BigDecimal[4];
/** Quantity */
private BigDecimal m_qty = null;
/**
* Get the Amount
* (loaded in loadDocumentDetails)
*
* @param AmtType see AMTTYPE_*
* @return Amount
*/
public BigDecimal getAmount(int AmtType)
{
if (AmtType < 0 || AmtType >= m_Amounts.length)
return null;
return m_Amounts[AmtType];
} // getAmount
/**
* Set the Amount
* @param AmtType see AMTTYPE_*
* @param amt Amount
*/
protected void setAmount(int AmtType, BigDecimal amt)
{
if (AmtType < 0 || AmtType >= m_Amounts.length)
return;
if (amt == null)
m_Amounts[AmtType] = Env.ZERO;
else
m_Amounts[AmtType] = amt;
} // setAmount
/**
* Get Amount with index 0
* @return Amount (primary document amount)
*/
public BigDecimal getAmount()
{
return m_Amounts[0];
} // getAmount
/**
* Set Quantity
* @param qty Quantity
*/
protected void setQty (BigDecimal qty)
{
m_qty = qty;
} // setQty
/**
* Get Quantity
* @return Quantity
*/
public BigDecimal getQty()
{
if (m_qty == null)
{
int index = p_po.get_ColumnIndex("Qty");
if (index != -1)
m_qty = (BigDecimal)p_po.get_Value(index);
else
m_qty = Env.ZERO;
}
return m_qty;
} // getQty
/*************************************************************************/
/** Account Type - Invoice */
public static final int ACCTTYPE_Charge = 0;
public static final int ACCTTYPE_C_Receivable = 1;
public static final int ACCTTYPE_V_Liability = 2;
public static final int ACCTTYPE_V_Liability_Services = 3;
public static final int ACCTTYPE_C_Receivable_Services = 4;
/** Account Type - Payment */
public static final int ACCTTYPE_UnallocatedCash = 10;
public static final int ACCTTYPE_BankInTransit = 11;
public static final int ACCTTYPE_PaymentSelect = 12;
public static final int ACCTTYPE_C_Prepayment = 13;
public static final int ACCTTYPE_V_Prepayment = 14;
/** Account Type - Cash */
public static final int ACCTTYPE_CashAsset = 20;
public static final int ACCTTYPE_CashTransfer = 21;
public static final int ACCTTYPE_CashExpense = 22;
public static final int ACCTTYPE_CashReceipt = 23;
public static final int ACCTTYPE_CashDifference = 24;
/** Account Type - Allocation */
public static final int ACCTTYPE_DiscountExp = 30;
public static final int ACCTTYPE_DiscountRev = 31;
public static final int ACCTTYPE_WriteOff = 32;
/** Account Type - Bank Statement */
public static final int ACCTTYPE_BankAsset = 40;
public static final int ACCTTYPE_InterestRev = 41;
public static final int ACCTTYPE_InterestExp = 42;
/** Inventory Accounts */
public static final int ACCTTYPE_InvDifferences = 50;
public static final int ACCTTYPE_NotInvoicedReceipts = 51;
/** Project Accounts */
public static final int ACCTTYPE_ProjectAsset = 61;
public static final int ACCTTYPE_ProjectWIP = 62;
/** GL Accounts */
public static final int ACCTTYPE_PPVOffset = 101;
public static final int ACCTTYPE_CommitmentOffset = 111;
/**
* Get the Valid Combination id for Accounting Schema
* @param AcctType see ACCTTYPE_*
* @param as accounting schema
* @return C_ValidCombination_ID
*/
public int getValidCombination_ID (int AcctType, MAcctSchema as)
{
int para_1 = 0; // first parameter (second is always AcctSchema)
String sql = null;
/** Account Type - Invoice */
if (AcctType == ACCTTYPE_Charge) // see getChargeAccount in DocLine
{
int cmp = getAmount(AMTTYPE_Charge).compareTo(Env.ZERO);
if (cmp == 0)
return 0;
else if (cmp < 0)
sql = "SELECT CH_Expense_Acct FROM C_Charge_Acct WHERE C_Charge_ID=? AND C_AcctSchema_ID=?";
else
sql = "SELECT CH_Revenue_Acct FROM C_Charge_Acct WHERE C_Charge_ID=? AND C_AcctSchema_ID=?";
para_1 = getC_Charge_ID();
}
else if (AcctType == ACCTTYPE_V_Liability)
{
sql = "SELECT V_Liability_Acct FROM C_BP_Vendor_Acct WHERE C_BPartner_ID=? AND C_AcctSchema_ID=?";
para_1 = getC_BPartner_ID();
}
else if (AcctType == ACCTTYPE_V_Liability_Services)
{
sql = "SELECT V_Liability_Services_Acct FROM C_BP_Vendor_Acct WHERE C_BPartner_ID=? AND C_AcctSchema_ID=?";
para_1 = getC_BPartner_ID();
}
else if (AcctType == ACCTTYPE_C_Receivable)
{
sql = "SELECT C_Receivable_Acct FROM C_BP_Customer_Acct WHERE C_BPartner_ID=? AND C_AcctSchema_ID=?";
para_1 = getC_BPartner_ID();
}
else if (AcctType == ACCTTYPE_C_Receivable_Services)
{
sql = "SELECT C_Receivable_Services_Acct FROM C_BP_Customer_Acct WHERE C_BPartner_ID=? AND C_AcctSchema_ID=?";
para_1 = getC_BPartner_ID();
}
else if (AcctType == ACCTTYPE_V_Prepayment)
{
sql = "SELECT V_Prepayment_Acct FROM C_BP_Vendor_Acct WHERE C_BPartner_ID=? AND C_AcctSchema_ID=?";
para_1 = getC_BPartner_ID();
}
else if (AcctType == ACCTTYPE_C_Prepayment)
{
sql = "SELECT C_Prepayment_Acct FROM C_BP_Customer_Acct WHERE C_BPartner_ID=? AND C_AcctSchema_ID=?";
para_1 = getC_BPartner_ID();
}
/** Account Type - Payment */
else if (AcctType == ACCTTYPE_UnallocatedCash)
{
sql = "SELECT B_UnallocatedCash_Acct FROM C_BankAccount_Acct WHERE C_BankAccount_ID=? AND C_AcctSchema_ID=?";
para_1 = getC_BankAccount_ID();
}
else if (AcctType == ACCTTYPE_BankInTransit)
{
sql = "SELECT B_InTransit_Acct FROM C_BankAccount_Acct WHERE C_BankAccount_ID=? AND C_AcctSchema_ID=?";
para_1 = getC_BankAccount_ID();
}
else if (AcctType == ACCTTYPE_PaymentSelect)
{
sql = "SELECT B_PaymentSelect_Acct FROM C_BankAccount_Acct WHERE C_BankAccount_ID=? AND C_AcctSchema_ID=?";
para_1 = getC_BankAccount_ID();
}
/** Account Type - Allocation */
else if (AcctType == ACCTTYPE_DiscountExp)
{
sql = "SELECT a.PayDiscount_Exp_Acct FROM C_BP_Group_Acct a, C_BPartner bp "
+ "WHERE a.C_BP_Group_ID=bp.C_BP_Group_ID AND bp.C_BPartner_ID=? AND a.C_AcctSchema_ID=?";
para_1 = getC_BPartner_ID();
}
else if (AcctType == ACCTTYPE_DiscountRev)
{
sql = "SELECT PayDiscount_Rev_Acct FROM C_BP_Group_Acct a, C_BPartner bp "
+ "WHERE a.C_BP_Group_ID=bp.C_BP_Group_ID AND bp.C_BPartner_ID=? AND a.C_AcctSchema_ID=?";
para_1 = getC_BPartner_ID();
}
else if (AcctType == ACCTTYPE_WriteOff)
{
sql = "SELECT WriteOff_Acct FROM C_BP_Group_Acct a, C_BPartner bp "
+ "WHERE a.C_BP_Group_ID=bp.C_BP_Group_ID AND bp.C_BPartner_ID=? AND a.C_AcctSchema_ID=?";
para_1 = getC_BPartner_ID();
}
/** Account Type - Bank Statement */
else if (AcctType == ACCTTYPE_BankAsset)
{
sql = "SELECT B_Asset_Acct FROM C_BankAccount_Acct WHERE C_BankAccount_ID=? AND C_AcctSchema_ID=?";
para_1 = getC_BankAccount_ID();
}
else if (AcctType == ACCTTYPE_InterestRev)
{
sql = "SELECT B_InterestRev_Acct FROM C_BankAccount_Acct WHERE C_BankAccount_ID=? AND C_AcctSchema_ID=?";
para_1 = getC_BankAccount_ID();
}
else if (AcctType == ACCTTYPE_InterestExp)
{
sql = "SELECT B_InterestExp_Acct FROM C_BankAccount_Acct WHERE C_BankAccount_ID=? AND C_AcctSchema_ID=?";
para_1 = getC_BankAccount_ID();
}
/** Account Type - Cash */
else if (AcctType == ACCTTYPE_CashAsset)
{
sql = "SELECT CB_Asset_Acct FROM C_CashBook_Acct WHERE C_CashBook_ID=? AND C_AcctSchema_ID=?";
para_1 = getC_CashBook_ID();
}
else if (AcctType == ACCTTYPE_CashTransfer)
{
sql = "SELECT CB_CashTransfer_Acct FROM C_CashBook_Acct WHERE C_CashBook_ID=? AND C_AcctSchema_ID=?";
para_1 = getC_CashBook_ID();
}
else if (AcctType == ACCTTYPE_CashExpense)
{
sql = "SELECT CB_Expense_Acct FROM C_CashBook_Acct WHERE C_CashBook_ID=? AND C_AcctSchema_ID=?";
para_1 = getC_CashBook_ID();
}
else if (AcctType == ACCTTYPE_CashReceipt)
{
sql = "SELECT CB_Receipt_Acct FROM C_CashBook_Acct WHERE C_CashBook_ID=? AND C_AcctSchema_ID=?";
para_1 = getC_CashBook_ID();
}
else if (AcctType == ACCTTYPE_CashDifference)
{
sql = "SELECT CB_Differences_Acct FROM C_CashBook_Acct WHERE C_CashBook_ID=? AND C_AcctSchema_ID=?";
para_1 = getC_CashBook_ID();
}
/** Inventory Accounts */
else if (AcctType == ACCTTYPE_InvDifferences)
{
sql = "SELECT W_Differences_Acct FROM M_Warehouse_Acct WHERE M_Warehouse_ID=? AND C_AcctSchema_ID=?";
// "SELECT W_Inventory_Acct, W_Revaluation_Acct, W_InvActualAdjust_Acct FROM M_Warehouse_Acct WHERE M_Warehouse_ID=? AND C_AcctSchema_ID=?";
para_1 = getM_Warehouse_ID();
}
else if (AcctType == ACCTTYPE_NotInvoicedReceipts)
{
sql = "SELECT NotInvoicedReceipts_Acct FROM C_BP_Group_Acct a, C_BPartner bp "
+ "WHERE a.C_BP_Group_ID=bp.C_BP_Group_ID AND bp.C_BPartner_ID=? AND a.C_AcctSchema_ID=?";
para_1 = getC_BPartner_ID();
}
/** Project Accounts */
else if (AcctType == ACCTTYPE_ProjectAsset)
{
sql = "SELECT PJ_Asset_Acct FROM C_Project_Acct WHERE C_Project_ID=? AND C_AcctSchema_ID=?";
para_1 = getC_Project_ID();
}
else if (AcctType == ACCTTYPE_ProjectWIP)
{
sql = "SELECT PJ_WIP_Acct FROM C_Project_Acct WHERE C_Project_ID=? AND C_AcctSchema_ID=?";
para_1 = getC_Project_ID();
}
/** GL Accounts */
else if (AcctType == ACCTTYPE_PPVOffset)
{
sql = "SELECT PPVOffset_Acct FROM C_AcctSchema_GL WHERE C_AcctSchema_ID=?";
para_1 = -1;
}
else if (AcctType == ACCTTYPE_CommitmentOffset)
{
sql = "SELECT CommitmentOffset_Acct FROM C_AcctSchema_GL WHERE C_AcctSchema_ID=?";
para_1 = -1;
}
else
{
log.severe ("Not found AcctType=" + AcctType);
return 0;
}
// Do we have sql & Parameter
if (sql == null || para_1 == 0)
{
log.severe ("No Parameter for AcctType=" + AcctType + " - SQL=" + sql);
return 0;
}
// Get Acct
int Account_ID = 0;
try
{
PreparedStatement pstmt = DB.prepareStatement(sql, null);
if (para_1 == -1) // GL Accounts
pstmt.setInt (1, as.getC_AcctSchema_ID());
else
{
pstmt.setInt (1, para_1);
pstmt.setInt (2, as.getC_AcctSchema_ID());
}
ResultSet rs = pstmt.executeQuery();
if (rs.next())
Account_ID = rs.getInt(1);
rs.close();
pstmt.close();
}
catch (SQLException e)
{
log.log(Level.SEVERE, "AcctType=" + AcctType + " - SQL=" + sql, e);
return 0;
}
// No account
if (Account_ID == 0)
{
log.severe ("NO account Type="
+ AcctType + ", Record=" + p_po.get_ID());
return 0;
}
return Account_ID;
} // getAccount_ID
/**
* Get the account for Accounting Schema
* @param AcctType see ACCTTYPE_*
* @param as accounting schema
* @return Account
*/
public final MAccount getAccount (int AcctType, MAcctSchema as)
{
int C_ValidCombination_ID = getValidCombination_ID(AcctType, as);
if (C_ValidCombination_ID == 0)
return null;
// Return Account
MAccount acct = MAccount.get (as.getCtx(), C_ValidCombination_ID);
return acct;
} // getAccount
/**************************************************************************
* Save to Disk - set posted flag
* @param trxName transaction name
* @return true if saved
*/
private final boolean save (String trxName)
{
log.fine(toString() + "->" + p_Status);
StringBuffer sql = new StringBuffer("UPDATE ");
sql.append(get_TableName()).append(" SET Posted='").append(p_Status)
.append("',Processing='N' ")
.append("WHERE ")
.append(get_TableName()).append("_ID=").append(p_po.get_ID());
int no = DB.executeUpdate(sql.toString(), trxName);
return no == 1;
} // save
/**
* Get DocLine with ID
* @param Record_ID Record ID
* @return DocLine
*/
public DocLine getDocLine (int Record_ID)
{
if (p_lines == null || p_lines.length == 0 || Record_ID == 0)
return null;
for (int i = 0; i < p_lines.length; i++)
{
if (p_lines[i].get_ID() == Record_ID)
return p_lines[i];
}
return null;
} // getDocLine
/**
* String Representation
* @return String
*/
public String toString()
{
return p_po.toString();
} // toString
/**
* Get AD_Client_ID
* @return client
*/
public int getAD_Client_ID()
{
return p_po.getAD_Client_ID();
} // getAD_Client_ID
/**
* Get AD_Org_ID
* @return org
*/
public int getAD_Org_ID()
{
return p_po.getAD_Org_ID();
} // getAD_Org_ID
/**
* Get Document No
* @return document No
*/
public String getDocumentNo()
{
if (m_DocumentNo != null)
return m_DocumentNo;
int index = p_po.get_ColumnIndex("DocumentNo");
if (index == -1)
index = p_po.get_ColumnIndex("Name");
if (index == -1)
throw new UnsupportedOperationException("No DocumentNo");
m_DocumentNo = (String)p_po.get_Value(index);
return m_DocumentNo;
} // getDocumentNo
/**
* Get Description
* @return Description
*/
public String getDescription()
{
if (m_Description == null)
{
int index = p_po.get_ColumnIndex("Description");
if (index != -1)
m_Description = (String)p_po.get_Value(index);
else
m_Description = "";
}
return m_Description;
} // getDescription
/**
* Get C_Currency_ID
* @return currency
*/
public int getC_Currency_ID()
{
if (m_C_Currency_ID == -1)
{
int index = p_po.get_ColumnIndex("C_Currency_ID");
if (index != -1)
{
Integer ii = (Integer)p_po.get_Value(index);
if (ii != null)
m_C_Currency_ID = ii.intValue();
}
if (m_C_Currency_ID == -1)
m_C_Currency_ID = NO_CURRENCY;
}
return m_C_Currency_ID;
} // getC_Currency_ID
/**
* Set C_Currency_ID
* @param C_Currency_ID id
*/
public void setC_Currency_ID (int C_Currency_ID)
{
m_C_Currency_ID = C_Currency_ID;
} // setC_Currency_ID
/**
* Is Multi Currency
* @return mc
*/
public boolean isMultiCurrency()
{
return m_MultiCurrency;
} // isMultiCurrency
/**
* Set Multi Currency
* @param mc multi currency
*/
protected void setIsMultiCurrency (boolean mc)
{
m_MultiCurrency = mc;
} // setIsMultiCurrency
/**
* Is Tax Included
* @return tax incl
*/
public boolean isTaxIncluded()
{
return m_TaxIncluded;
} // isTaxIncluded
/**
* Set Tax Includedy
* @param ti Tax Included
*/
protected void setIsTaxIncluded (boolean ti)
{
m_TaxIncluded = ti;
} // setIsTaxIncluded
/**
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -