⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mallocation.java

📁 Java写的ERP系统
💻 JAVA
字号:
/******************************************************************************
 * The contents of this file are subject to the   Compiere License  Version 1.1
 * ("License"); You may not use this file except in compliance with the License
 * You may obtain a copy of the License at http://www.compiere.org/license.html
 * Software distributed under the License is distributed on an  "AS IS"  basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
 * the specific language governing rights and limitations under the License.
 * The Original Code is                  Compiere  ERP & CRM  Business Solution
 * The Initial Developer of the Original Code is Jorg Janke  and ComPiere, Inc.
 * Portions created by Jorg Janke are Copyright (C) 1999-2001 Jorg Janke, parts
 * created by ComPiere are Copyright (C) ComPiere, Inc.;   All Rights Reserved.
 * Contributor(s): ______________________________________.
 *****************************************************************************/
package org.compiere.model;

import java.sql.*;
import java.util.*;
import java.math.*;

import org.compiere.util.*;
import java.io.*;

/**
 *  Payment Allocation Model
 *
 *  @author 	Jorg Janke
 *  @version 	$Id: MAllocation.java,v 1.8 2002/09/03 05:10:35 jjanke Exp $
 */
public final class MAllocation implements Serializable
{
	/**
	 *  Create Allocation.
	 *  - load Allocation starting from TYPE_
	 *  @param type type of allocation TYPE_
	 *  @param Record_ID record id
	 */
	public MAllocation (int type, int Record_ID)
	{
		String sql = "SELECT * FROM C_Allocation WHERE ";
		if (type == TYPE_Invoice)
			sql += "C_Invoice_ID=?";
		else  if (type == TYPE_Order)
			sql += "C_Order_ID=?";
		else  if (type == TYPE_Payment)
			sql += "C_Payment_ID=?";
		else  if (type == TYPE_CashLine)
			sql += "C_CashLine_ID=?";
		else
			return;

		//  Retrieve from DB
		try
		{
			PreparedStatement pstmt = DB.prepareStatement(sql.toString());
			pstmt.setInt(1, Record_ID);
			ResultSet rs = pstmt.executeQuery();
			while (rs.next())
			{
				int C_Invoice_ID = rs.getInt("C_Invoice_ID");
				if (!rs.wasNull())
					m_listInvoices.add(new Integer(C_Invoice_ID));
				//
				int C_Order_ID = rs.getInt("C_Order_ID");
				if (!rs.wasNull())
					m_listOrders.add(new Integer(C_Order_ID));
				//
				int C_Payment_ID = rs.getInt("C_Payment_ID");
				if (!rs.wasNull())
					m_listPayments.add(new Integer(C_Payment_ID));
				//
				int C_CashLine_ID = rs.getInt("C_CashLine_ID");
				if (!rs.wasNull())
					m_listCashLines.add(new Integer(C_CashLine_ID));
				//  Amounts
				BigDecimal temp = rs.getBigDecimal("Amount");
				if (temp != null)
					m_Amount = m_Amount.add(temp);
				temp = rs.getBigDecimal("DiscountAmt");
				if (temp != null)
					m_DiscountAmt = m_DiscountAmt.add(temp);
				temp = rs.getBigDecimal("WriteOffAmt");
				if (temp != null)
					m_WriteOffAmt = m_WriteOffAmt.add(temp);
			}
			rs.close();
			pstmt.close();
		}
		catch (SQLException e)
		{
			Log.error ("MAllocation.Constructor", e);
		}
	}   //  MAllocation

	/** Associated Invoices     */
	private ArrayList m_listInvoices = new ArrayList();
	/** Associated Orders       */
	private ArrayList m_listOrders = new ArrayList();
	/** Associated Payments     */
	private ArrayList m_listPayments = new ArrayList();
	/** Associated CashLines    */
	private ArrayList m_listCashLines = new ArrayList();

	BigDecimal m_Amount = new BigDecimal(0.0);
	BigDecimal m_DiscountAmt = new BigDecimal(0.0);
	BigDecimal m_WriteOffAmt = new BigDecimal(0.0);

	/** */
	public final static int TYPE_Invoice    = 1;
	public final static int TYPE_Order      = 2;
	public final static int TYPE_Payment    = 3;
	public final static int TYPE_CashLine   = 4;

	/**
	 *  Dispose
	 */
	public void dispose()
	{
		if (m_listInvoices != null)
			m_listInvoices.clear();
		m_listInvoices = null;
		if (m_listOrders != null)
			m_listOrders.clear();
		m_listOrders = null;
		if (m_listPayments != null)
			m_listPayments.clear();
		m_listPayments = null;
		if (m_listCashLines != null)
			m_listCashLines.clear();
		m_listCashLines = null;
	}   //  dispose

	/**
	 *  Get InvoiceIDs
	 *  @return invoice IDs
	 */
	public ArrayList getInvoiceIDs()
	{
		return m_listInvoices;
	}   //  getInvoiceIDs

	/**
	 *  Get OrderIDs
	 *  @return order IDs
	 */
	public ArrayList getOrderIDs()
	{
		return m_listOrders;
	}   //  getOrdersIDs

	/**
	 *  Get PaymentIDs
	 *  @return payment IDs
	 */
	public ArrayList getPaymentIDs()
	{
		return m_listPayments;
	}   //  getPaymentIDs

	/**
	 *  Get CashLineIDs
	 *  @return cash line IDs
	 */
	public ArrayList getCashLineIDs()
	{
		return m_listCashLines;
	}   //  getCashLineIDs

	/**
	 *  Get Total Amount
	 *  @return total amount
	 */
	public BigDecimal getAmount()
	{
		return m_Amount;
	}   //  getAmount

	/**
	 *  Get Total DiscountAmt
	 *  @return discount amount
	 */
	public BigDecimal getDiscountAmt()
	{
		return m_DiscountAmt;
	}   //  getDiscountAmt

	/**
	 *  Get Total WriteOffAmt
	 *  @return write-off amount
	 */
	public BigDecimal getWriteOffAmt()
	{
		return m_WriteOffAmt;
	}   //  getWriteOffAmt

	/*************************************************************************/

	/**
	 *  Create new Allocation
	 *
	 * 	@param ctx context
	 * 	@param WindowNo window no
	 * 	@param AD_Client_ID client
	 * 	@param AD_Org_ID org
	 * 	@param C_BPartner_ID business partner
	 * 	@param C_Order_ID order
	 * 	@param C_Invoice_ID invoice
	 * 	@param C_Payment_ID payment
	 * 	@param C_CashLine_ID cash line
	 * 	@param AllocationNo allocation no
	 * 	@param C_Currency_ID currency
	 * 	@param DateTrx trx date
	 * 	@param IsManual manual trx
	 * 	@param Amount amount
	 * 	@param DiscountAmt discount amount
	 * 	@param WriteOffAmt write-off amount
	 *  @return C_Allocation_ID or zero if failed
	 */
	public static int createAllocation (Properties ctx, int WindowNo,
		int AD_Client_ID, int AD_Org_ID,
		int C_BPartner_ID, int C_Order_ID, int C_Invoice_ID, int C_Payment_ID, int C_CashLine_ID,
		int AllocationNo, int C_Currency_ID, Timestamp DateTrx, boolean IsManual,
		BigDecimal Amount, BigDecimal DiscountAmt, BigDecimal WriteOffAmt)
	{
		StringBuffer sql = new StringBuffer("INSERT INTO C_Allocation "
			+ "(C_Allocation_ID,AD_Client_ID,AD_Org_ID, "
			+ "IsActive,Created,CreatedBy,Updated,UpdatedBy, "
			+ "AllocationNo,C_Currency_ID,DateTrx,IsManual, "
			+ "C_BPartner_ID,C_Invoice_ID,C_Order_ID,C_Payment_ID,C_CashLine_ID, "
			+ "Amount,DiscountAmt,WriteOffAmt, "
			+ "Processed,Posted) VALUES (");
		//
		Env.setContext(ctx, WindowNo, "AD_Client_ID", AD_Client_ID);    //  make sure
		int C_Allocation_ID = DB.getKeyNextNo(ctx, WindowNo, "C_Allocation");
		int user = Env.getContextAsInt(ctx, "#AD_User_ID");
		//
		sql.append(C_Allocation_ID).append(",");
		sql.append(AD_Client_ID).append(",").append(AD_Org_ID);
		sql.append(",'Y',SysDate,").append(user).append(",SysDate,").append(user).append(",");
		//  AllocationNo,C_Currency_ID,DateTrx,IsManual,
		sql.append(AllocationNo).append(",");
		sql.append(C_Currency_ID).append(",");
		sql.append(DB.TO_DATE(DateTrx, true)).append(",");
		sql.append(IsManual ? "'Y'," : "'N',");
		//  C_BPartner_ID,C_Invoice_ID,C_Order_ID,C_Payment_ID,C_CashLine_ID,
		if (C_BPartner_ID == 0)
			sql.append("NULL,");
		else
			sql.append(C_BPartner_ID).append(",");
		if (C_Invoice_ID == 0)
			sql.append("NULL,");
		else
			sql.append(C_Invoice_ID).append(",");
		if (C_Order_ID == 0)
			sql.append("NULL,");
		else
			sql.append(C_Order_ID).append(",");
		if (C_Payment_ID == 0)
			sql.append("NULL,");
		else
			sql.append(C_Payment_ID).append(",");
		if (C_CashLine_ID == 0)
			sql.append("NULL,");
		else
			sql.append(C_CashLine_ID).append(",");
		//  Amount,DiscountAmt,WriteOffAmt,
		if (Amount == null)
			sql.append("0,");
		else
			sql.append(Amount).append(",");
		if (DiscountAmt == null)
			sql.append("0,");
		else
			sql.append(DiscountAmt).append(",");
		if (WriteOffAmt == null)
			sql.append("0,");
		else
			sql.append(WriteOffAmt).append(",");
		//  Processed,Posted
		sql.append("'Y','N')");
		//
		int no = DB.executeUpdate(sql.toString());
		//
		if (no == 1)
			Log.trace(Log.l3_Util, "MAllocation.createAllocation - " + C_Allocation_ID);
		else
		{
			Log.error("MAllocation.createAllocation - Not Inserted - " + C_Allocation_ID);
			C_Allocation_ID = 0;
		}
		return C_Allocation_ID;
	}      //  create Allocation

}   //  MAllocation

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -