Moving back some non-libero processes

This commit is contained in:
teo_sarca 2009-02-12 17:55:33 +00:00
parent 73b5119694
commit 298e915cb7
3 changed files with 383 additions and 0 deletions

View File

@ -0,0 +1,189 @@
/******************************************************************************
* Product: Adempiere ERP & CRM Smart Business Solution *
* 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 *
* Copyright (C) 2003-2008 e-Evolution,SC. All Rights Reserved. *
* Contributor(s): Victor Perez www.e-evolution.com *
*****************************************************************************/
package org.eevolution.process;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.util.logging.Level;
import org.compiere.model.MBankAccount;
import org.compiere.model.MPayment;
import org.compiere.process.ProcessInfoParameter;
import org.compiere.process.SvrProcess;
import org.compiere.util.AdempiereUserError;
import org.compiere.util.Env;
/**
* Bank Transfer. Generate two Payments entry
*
* For Bank Transfer From Bank Account "A"
*
* @author victor.perez@e-evoltuion.com
*
**/
public class BankTransfer extends SvrProcess
{
private String p_DocumentNo= ""; // Document No
private String p_Description= ""; // Description
private int p_C_BPartner_ID = 0; // Business Partner to be used as bridge
private int p_C_Currency_ID = 0; // Payment Currency
private int p_C_ConversionType_ID = 0; // Payment Conversion Type
private int p_C_Charge_ID = 0; // Charge to be used as bridge
private BigDecimal p_Amount = new BigDecimal(0); // Amount to be transfered between the accounts
private int p_From_C_BankAccount_ID = 0; // Bank Account From
private int p_To_C_BankAccount_ID= 0; // Bank Account To
private Timestamp p_StatementDate = null; // Date Statement
private Timestamp p_DateAcct = null; // Date Account
/**
* Prepare - e.g., get Parameters.
*/
protected void prepare()
{
ProcessInfoParameter[] para = getParameter();
for (int i = 0; i < para.length; i++)
{
String name = para[i].getParameterName();
if (name.equals("From_C_BankAccount_ID"))
p_From_C_BankAccount_ID = para[i].getParameterAsInt();
else if (name.equals("To_C_BankAccount_ID"))
p_To_C_BankAccount_ID = para[i].getParameterAsInt();
else if (name.equals("C_BPartner_ID"))
p_C_BPartner_ID = para[i].getParameterAsInt();
else if (name.equals("C_Currency_ID"))
p_C_Currency_ID = para[i].getParameterAsInt();
else if (name.equals("C_ConversionType_ID"))
p_C_ConversionType_ID = para[i].getParameterAsInt();
else if (name.equals("C_Charge_ID"))
p_C_Charge_ID = para[i].getParameterAsInt();
else if (name.equals("DocumentNo"))
p_DocumentNo = (String)para[i].getParameter();
else if (name.equals("Amount"))
p_Amount = ((BigDecimal)para[i].getParameter());
else if (name.equals("Description"))
p_Description = (String)para[i].getParameter();
else if (name.equals("StatementDate"))
p_StatementDate = (Timestamp)para[i].getParameter();
else if (name.equals("DateAcct"))
p_DateAcct = (Timestamp)para[i].getParameter();
else
log.log(Level.SEVERE, "prepare - Unknown Parameter: " + name);
}
} // prepare
/**
* Perform process.
* @return Message (translated text)
* @throws Exception if not successful
*/
protected String doIt() throws Exception
{
log.info("From Bank="+p_From_C_BankAccount_ID+" - To Bank="+p_To_C_BankAccount_ID
+ " - C_BPartner_ID="+p_C_BPartner_ID+"- C_Charge_ID= "+p_C_Charge_ID+" - Amount="+p_Amount+" - DocumentNo="+p_DocumentNo
+ " - Description="+p_Description+ " - Statement Date="+p_StatementDate+
" - Date Account="+p_DateAcct);
if (p_To_C_BankAccount_ID == 0 || p_From_C_BankAccount_ID == 0)
throw new IllegalArgumentException("Banks required");
if (p_DocumentNo == null || p_DocumentNo.length() == 0)
throw new IllegalArgumentException("Document No required");
if (p_To_C_BankAccount_ID == p_From_C_BankAccount_ID)
throw new AdempiereUserError ("Banks From and To must be different");
if (p_C_BPartner_ID == 0)
throw new AdempiereUserError ("Business Partner required");
if (p_C_Currency_ID == 0)
throw new AdempiereUserError ("Currency required");
if (p_C_Charge_ID == 0)
throw new AdempiereUserError ("Business Partner required");
if (p_Amount.compareTo(new BigDecimal(0)) == 0)
throw new AdempiereUserError ("Amount required");
// Login Date
if (p_StatementDate == null)
p_StatementDate = Env.getContextAsDate(getCtx(), "#Date");
if (p_StatementDate == null)
p_StatementDate = new Timestamp(System.currentTimeMillis());
if (p_DateAcct == null)
p_DateAcct = p_StatementDate;
generateBankTransfer();
return "@OK@ ";
} // doIt
/**
* Generate BankTransfer()
*
*/
private void generateBankTransfer()
{
MBankAccount mBankFrom = new MBankAccount(getCtx(),p_From_C_BankAccount_ID, get_TrxName());
MBankAccount mBankTo = new MBankAccount(getCtx(),p_To_C_BankAccount_ID, get_TrxName());
MPayment paymentBankFrom = new MPayment(getCtx(), 0 , get_TrxName());
paymentBankFrom.setC_BankAccount_ID(mBankFrom.getC_BankAccount_ID());
paymentBankFrom.setDocumentNo(p_DocumentNo);
paymentBankFrom.setDateAcct(p_DateAcct);
paymentBankFrom.setDateTrx(p_StatementDate);
paymentBankFrom.setTenderType(MPayment.TENDERTYPE_DirectDeposit);
paymentBankFrom.setDescription(p_Description);
paymentBankFrom.setC_BPartner_ID (p_C_BPartner_ID);
paymentBankFrom.setC_Currency_ID(p_C_Currency_ID);
if (p_C_ConversionType_ID > 0)
paymentBankFrom.setC_ConversionType_ID(p_C_ConversionType_ID);
paymentBankFrom.setPayAmt(p_Amount);
paymentBankFrom.setOverUnderAmt(Env.ZERO);
paymentBankFrom.setC_DocType_ID(false);
paymentBankFrom.setC_Charge_ID(p_C_Charge_ID);
paymentBankFrom.save();
paymentBankFrom.processIt(MPayment.DOCACTION_Complete);
paymentBankFrom.saveEx();
MPayment paymentBankTo = new MPayment(getCtx(), 0 , get_TrxName());
paymentBankTo.setC_BankAccount_ID(mBankTo.getC_BankAccount_ID());
paymentBankTo.setDocumentNo(p_DocumentNo);
paymentBankTo.setDateAcct(p_DateAcct);
paymentBankTo.setDateTrx(p_StatementDate);
paymentBankTo.setTenderType(MPayment.TENDERTYPE_DirectDeposit);
paymentBankTo.setDescription(p_Description);
paymentBankTo.setC_BPartner_ID (p_C_BPartner_ID);
paymentBankTo.setC_Currency_ID(p_C_Currency_ID);
if (p_C_ConversionType_ID > 0)
paymentBankFrom.setC_ConversionType_ID(p_C_ConversionType_ID);
paymentBankTo.setPayAmt(p_Amount);
paymentBankTo.setOverUnderAmt(Env.ZERO);
paymentBankTo.setC_DocType_ID(true);
paymentBankTo.setC_Charge_ID(p_C_Charge_ID);
paymentBankTo.save();
paymentBankTo.processIt(MPayment.DOCACTION_Complete);
paymentBankTo.saveEx();
return;
} // createCashLines
} // ImmediateBankTransfer

View File

@ -0,0 +1,103 @@
/******************************************************************************
* Product: Adempiere ERP & CRM Smart Business Solution *
* 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 *
* Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
* Contributor(s): Victor Perez www.e-evolution.com *
*****************************************************************************/
package org.eevolution.process;
import java.util.List;
import java.util.logging.Level;
import org.adempiere.exceptions.AdempiereException;
import org.compiere.Adempiere;
import org.compiere.model.MSequence;
import org.compiere.model.MSysConfig;
import org.compiere.model.MTable;
import org.compiere.model.Query;
import org.compiere.model.X_AD_Table;
import org.compiere.process.SvrProcess;
import org.compiere.util.CLogMgt;
import org.compiere.util.DB;
/**
* Enable Native Sequence
*
* @author Victor Perez, e-Evolution, S.C.
*/
public class EnableNativeSequence extends SvrProcess
{
/**
* Prepare - e.g., get Parameters.
*/
protected void prepare()
{
} // prepare
protected String doIt()
{
boolean SYSTEM_NATIVE_SEQUENCE = MSysConfig.getBooleanValue("SYSTEM_NATIVE_SEQUENCE",false);
if(SYSTEM_NATIVE_SEQUENCE)
throw new AdempiereException("Native Sequence is Actived");
else
{
DB.executeUpdateEx("UPDATE AD_SysConfig SET Value='Y' WHERE Name='SYSTEM_NATIVE_SEQUENCE'",null);
MSysConfig.resetCache();
}
List<MTable> tables = new Query(getCtx(),X_AD_Table.Table_Name,"", get_TrxName()).list();
for(MTable table : tables)
{
if(!table.isView())
{
if(!MSequence.createTableSequence(getCtx(), table.getTableName(), get_TrxName()))
{
DB.executeUpdateEx("UPDATE AD_SysConfig SET Value='N' WHERE Name='SYSTEM_NATIVE_SEQUENCE'",null);
MSysConfig.resetCache();
new AdempiereException("Can not create Native Sequence");
}
else
{
this.addLog("Create Native Sequence for : "+table.getTableName());
}
}
}
return "@OK@";
}
/**
* Main test
* @param args
* @throws Exception
*/
public static void main(String[] args)
{
try {
Adempiere.startupEnvironment(true);
CLogMgt.setLevel(Level.ALL);
EnableNativeSequence seqs = new EnableNativeSequence();
seqs.doIt();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

View File

@ -0,0 +1,91 @@
/******************************************************************************
* Product: Adempiere ERP & CRM Smart Business Solution *
* 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 *
* Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
* Contributor(s): Victor Perez www.e-evolution.com *
*****************************************************************************/
package org.eevolution.process;
import org.adempiere.exceptions.FillMandatoryException;
import org.compiere.model.MBPartner;
import org.compiere.model.MFactAcct;
import org.compiere.model.MInvoice;
import org.compiere.model.MPeriod;
import org.compiere.process.ProcessInfoParameter;
import org.compiere.process.SvrProcess;
/**
* Re-calculate Invoice Tax (and unpost the document)
* @author victor.perez@e-evolution.com, e-Evolution http://www.e-evolution.com
* <li>FR [ 2520591 ] Support multiples calendar for Org
* @see http://sourceforge.net/tracker2/?func=detail&atid=879335&aid=2520591&group_id=176962
* @author Teo Sarca, www.arhipac.ro
*/
public class InvoiceCalculateTax extends SvrProcess
{
public static final String PARAM_C_Invoice_ID = "C_Invoice_ID";
private int p_C_Invoice_ID = 0;
@Override
protected void prepare()
{
for (ProcessInfoParameter para : getParameter())
{
String name = para.getParameterName();
if (para.getParameter() == null)
{
;
}
else if (name.equals(PARAM_C_Invoice_ID))
{
p_C_Invoice_ID = para.getParameterAsInt();
}
}
if (p_C_Invoice_ID <= 0)
{
throw new FillMandatoryException(PARAM_C_Invoice_ID);
}
}
@Override
protected String doIt() throws Exception
{
MInvoice invoice = new MInvoice(getCtx(), p_C_Invoice_ID, get_TrxName());
recalculateTax(invoice);
//
return "@ProcessOK@";
}
public static void recalculateTax(MInvoice invoice)
{
//
// Delete accounting /UnPost
MPeriod.testPeriodOpen(invoice.getCtx(), invoice.getDateAcct(), invoice.getC_DocType_ID(), invoice.getAD_Org_ID());
MFactAcct.deleteEx(MInvoice.Table_ID, invoice.get_ID(), invoice.get_TrxName());
//
// Update Invoice
invoice.calculateTaxTotal();
invoice.setPosted(false);
invoice.saveEx();
//
// Update balance
MBPartner bp = new MBPartner (invoice.getCtx(), invoice.getC_BPartner_ID(), invoice.get_TrxName());
bp.setTotalOpenBalance();
bp.setSOCreditStatus();
bp.saveEx();
}
}