hg merge 0717f533c660

This commit is contained in:
Carlos Ruiz 2012-10-15 18:44:37 -05:00
commit 4d56084f3f
72 changed files with 8602 additions and 705 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,27 @@
-- Oct 15, 2012 6:21:27 PM IST
-- IDEMPIERE-389 Adding server name on AD_Session
INSERT INTO AD_Element (ColumnName,AD_Element_ID,Help,EntityType,Name,PrintName,AD_Element_UU,AD_Client_ID,Created,Updated,AD_Org_ID,CreatedBy,UpdatedBy,IsActive) VALUES ('ServerName',200182,'Load balancing instance name','U','Server Name','Server Name','7bd7b80a-d97d-4643-8d69-e2856a2a144a',0,TO_DATE('2012-10-15 18:21:26','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2012-10-15 18:21:26','YYYY-MM-DD HH24:MI:SS'),0,100,100,'Y')
;
-- Oct 15, 2012 6:21:27 PM IST
-- IDEMPIERE-389 Adding server name on AD_Session
INSERT INTO AD_Element_Trl (AD_Language,AD_Element_ID, Help,PO_Description,PO_Help,Description,Name,PrintName,PO_Name,PO_PrintName, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Element_Trl_UU ) SELECT l.AD_Language,t.AD_Element_ID, t.Help,t.PO_Description,t.PO_Help,t.Description,t.Name,t.PrintName,t.PO_Name,t.PO_PrintName, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Element t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Element_ID=200182 AND NOT EXISTS (SELECT * FROM AD_Element_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Element_ID=t.AD_Element_ID)
;
-- Oct 15, 2012 6:22:04 PM IST
-- IDEMPIERE-389 Adding server name on AD_Session
INSERT INTO AD_Column (Version,AD_Table_ID,AD_Column_ID,EntityType,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsSyncDatabase,IsKey,AD_Element_ID,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsEncrypted,IsUpdateable,IsAlwaysUpdateable,ColumnName,Help,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,AD_Client_ID,SeqNoSelection) VALUES (0,566,200613,'U','N','N','N',0,'N',40,'Y',14,'N','N',200182,'N','Y','14d3c02e-9f80-40cb-8507-e040fbaf3ef6','N','Y','N','ServerName','Load balancing instance name','Server Name','Y',100,TO_DATE('2012-10-15 18:22:03','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_DATE('2012-10-15 18:22:03','YYYY-MM-DD HH24:MI:SS'),100,0,0)
;
-- Oct 15, 2012 6:22:04 PM IST
-- IDEMPIERE-389 Adding server name on AD_Session
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=200613 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID)
;
-- Oct 15, 2012 6:22:45 PM IST
-- IDEMPIERE-389 Adding server name on AD_Session
ALTER TABLE AD_Session ADD ServerName NVARCHAR2(40) DEFAULT NULL
;
SELECT register_migration_script('934_IDEMPIERE-389.sql') FROM dual
;

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,27 @@
-- Oct 15, 2012 6:21:27 PM IST
-- IDEMPIERE-389 Adding server name on AD_Session
INSERT INTO AD_Element (ColumnName,AD_Element_ID,Help,EntityType,Name,PrintName,AD_Element_UU,AD_Client_ID,Created,Updated,AD_Org_ID,CreatedBy,UpdatedBy,IsActive) VALUES ('ServerName',200182,'Load balancing instance name','U','Server Name','Server Name','7bd7b80a-d97d-4643-8d69-e2856a2a144a',0,TO_TIMESTAMP('2012-10-15 18:21:26','YYYY-MM-DD HH24:MI:SS'),TO_TIMESTAMP('2012-10-15 18:21:26','YYYY-MM-DD HH24:MI:SS'),0,100,100,'Y')
;
-- Oct 15, 2012 6:21:27 PM IST
-- IDEMPIERE-389 Adding server name on AD_Session
INSERT INTO AD_Element_Trl (AD_Language,AD_Element_ID, Help,PO_Description,PO_Help,Description,Name,PrintName,PO_Name,PO_PrintName, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Element_Trl_UU ) SELECT l.AD_Language,t.AD_Element_ID, t.Help,t.PO_Description,t.PO_Help,t.Description,t.Name,t.PrintName,t.PO_Name,t.PO_PrintName, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Element t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Element_ID=200182 AND NOT EXISTS (SELECT * FROM AD_Element_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Element_ID=t.AD_Element_ID)
;
-- Oct 15, 2012 6:22:04 PM IST
-- IDEMPIERE-389 Adding server name on AD_Session
INSERT INTO AD_Column (Version,AD_Table_ID,AD_Column_ID,EntityType,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsSyncDatabase,IsKey,AD_Element_ID,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsEncrypted,IsUpdateable,IsAlwaysUpdateable,ColumnName,Help,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,AD_Client_ID,SeqNoSelection) VALUES (0,566,200613,'U','N','N','N',0,'N',40,'Y',14,'N','N',200182,'N','Y','14d3c02e-9f80-40cb-8507-e040fbaf3ef6','N','Y','N','ServerName','Load balancing instance name','Server Name','Y',100,TO_TIMESTAMP('2012-10-15 18:22:03','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_TIMESTAMP('2012-10-15 18:22:03','YYYY-MM-DD HH24:MI:SS'),100,0,0)
;
-- Oct 15, 2012 6:22:04 PM IST
-- IDEMPIERE-389 Adding server name on AD_Session
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=200613 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID)
;
-- Oct 15, 2012 6:22:45 PM IST
-- IDEMPIERE-389 Adding server name on AD_Session
ALTER TABLE AD_Session ADD COLUMN ServerName VARCHAR(40) DEFAULT NULL
;
SELECT register_migration_script('934_IDEMPIERE-389.sql') FROM dual
;

View File

@ -0,0 +1,90 @@
package org.adempiere.util;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.NumberFormat;
import java.text.ParsePosition;
import java.util.ArrayList;
import java.util.logging.Level;
import org.compiere.model.MBPBankAccount;
import org.compiere.model.MBPartner;
import org.compiere.util.CLogger;
import org.compiere.util.DB;
public class PaymentUtil {
private static final CLogger logger = CLogger.getCLogger(PaymentUtil.class);
public static MBPBankAccount[] getBankAccounts(MBPartner bpartner,
String creditCardNo) {
ArrayList<MBPBankAccount> list = new ArrayList<MBPBankAccount>();
String sql = "SELECT * FROM C_BP_BankAccount WHERE C_BPartner_ID=? AND CREDITCARDNUMBER=?";
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
pstmt = DB.prepareStatement(sql, bpartner.get_TrxName());
pstmt.setInt(1, bpartner.getC_BPartner_ID());
pstmt.setString(2, creditCardNo);
rs = pstmt.executeQuery();
while (rs.next())
list.add(new MBPBankAccount(bpartner.getCtx(), rs, bpartner
.get_TrxName()));
} catch (Exception e) {
logger.log(Level.SEVERE, sql, e);
} finally {
DB.close(rs, pstmt);
}
MBPBankAccount[] m_accounts = new MBPBankAccount[list.size()];
list.toArray(m_accounts);
return m_accounts;
}
public static String encrpytCreditCard(String value) {
if (value == null)
return "";
else
if (value.length() <= 4)
return value;
Integer valueLength = value.length();
StringBuffer encryptedCC = new StringBuffer();
for (int i = 0; i < (valueLength - 4); i++) {
encryptedCC.append("*");
}
encryptedCC.append(value.substring(valueLength - 4, valueLength));
return encryptedCC.toString();
}
public static String encrpytCvv(String creditCardVV) {
if (creditCardVV == null)
return "";
else {
Integer valueLength = creditCardVV.length();
StringBuffer encryptedCC = new StringBuffer();
for (int i = 0; i < valueLength; i++) {
encryptedCC.append("0");
}
return encryptedCC.toString();
}
}
public static boolean isNumeric(String str) {
if (str != null && str.length() > 0) {
NumberFormat formatter = NumberFormat.getInstance();
ParsePosition pos = new ParsePosition(0);
formatter.parse(str, pos);
return str.length() == pos.getIndex();
}
return true;
}
}

View File

@ -202,6 +202,11 @@ public class GridField
MPAttributeLookup pa = new MPAttributeLookup (m_vo.ctx, m_vo.WindowNo);
m_lookup = pa;
}
else if (m_vo.displayType == DisplayType.Payment)
{
MPaymentLookup pl = new MPaymentLookup (m_vo.ctx, m_vo.WindowNo, m_vo.AD_Column_ID);
m_lookup = pl;
}
} // m_lookup
/**
@ -239,7 +244,8 @@ public class GridField
else if (m_vo.displayType == DisplayType.Location
|| m_vo.displayType == DisplayType.Locator
|| m_vo.displayType == DisplayType.Account
|| m_vo.displayType == DisplayType.PAttribute)
|| m_vo.displayType == DisplayType.PAttribute
|| m_vo.displayType == DisplayType.Payment)
retValue = true;
return retValue;

View File

@ -180,6 +180,15 @@ public interface I_AD_Session
*/
public String getRemote_Host();
/** Column name ServerName */
public static final String COLUMNNAME_ServerName = "ServerName";
/** Set Server name */
public void setServerName (String ServerName);
/** Get Server name */
public String getServerName();
/** Column name Updated */
public static final String COLUMNNAME_Updated = "Updated";

View File

@ -31,7 +31,7 @@ public interface I_C_BP_BankAccount
public static final String Table_Name = "C_BP_BankAccount";
/** AD_Table_ID=298 */
public static final int Table_ID = MTable.getTable_ID(Table_Name);
public static final int Table_ID = 298;
KeyNamePair Model = new KeyNamePair(Table_ID, Table_Name);
@ -41,19 +41,6 @@ public interface I_C_BP_BankAccount
/** Load Meta Data */
/** Column name AccountNo */
public static final String COLUMNNAME_AccountNo = "AccountNo";
/** Set Account No.
* Account Number
*/
public void setAccountNo (String AccountNo);
/** Get Account No.
* Account Number
*/
public String getAccountNo();
/** Column name A_City */
public static final String COLUMNNAME_A_City = "A_City";
@ -80,42 +67,6 @@ public interface I_C_BP_BankAccount
*/
public String getA_Country();
/** Column name AD_Client_ID */
public static final String COLUMNNAME_AD_Client_ID = "AD_Client_ID";
/** Get Client.
* Client/Tenant for this installation.
*/
public int getAD_Client_ID();
/** Column name AD_Org_ID */
public static final String COLUMNNAME_AD_Org_ID = "AD_Org_ID";
/** Set Organization.
* Organizational entity within client
*/
public void setAD_Org_ID (int AD_Org_ID);
/** Get Organization.
* Organizational entity within client
*/
public int getAD_Org_ID();
/** Column name AD_User_ID */
public static final String COLUMNNAME_AD_User_ID = "AD_User_ID";
/** Set User/Contact.
* User within the system - Internal or Business Partner Contact
*/
public void setAD_User_ID (int AD_User_ID);
/** Get User/Contact.
* User within the system - Internal or Business Partner Contact
*/
public int getAD_User_ID();
public I_AD_User getAD_User() throws RuntimeException;
/** Column name A_EMail */
public static final String COLUMNNAME_A_EMail = "A_EMail";
@ -207,6 +158,55 @@ public interface I_C_BP_BankAccount
*/
public String getA_Zip();
/** Column name AccountNo */
public static final String COLUMNNAME_AccountNo = "AccountNo";
/** Set Account No.
* Account Number
*/
public void setAccountNo (String AccountNo);
/** Get Account No.
* Account Number
*/
public String getAccountNo();
/** Column name AD_Client_ID */
public static final String COLUMNNAME_AD_Client_ID = "AD_Client_ID";
/** Get Client.
* Client/Tenant for this installation.
*/
public int getAD_Client_ID();
/** Column name AD_Org_ID */
public static final String COLUMNNAME_AD_Org_ID = "AD_Org_ID";
/** Set Organization.
* Organizational entity within client
*/
public void setAD_Org_ID (int AD_Org_ID);
/** Get Organization.
* Organizational entity within client
*/
public int getAD_Org_ID();
/** Column name AD_User_ID */
public static final String COLUMNNAME_AD_User_ID = "AD_User_ID";
/** Set User/Contact.
* User within the system - Internal or Business Partner Contact
*/
public void setAD_User_ID (int AD_User_ID);
/** Get User/Contact.
* User within the system - Internal or Business Partner Contact
*/
public int getAD_User_ID();
public org.compiere.model.I_AD_User getAD_User() throws RuntimeException;
/** Column name BankAccountType */
public static final String COLUMNNAME_BankAccountType = "BankAccountType";
@ -246,7 +246,29 @@ public interface I_C_BP_BankAccount
*/
public int getC_Bank_ID();
public I_C_Bank getC_Bank() throws RuntimeException;
public org.compiere.model.I_C_Bank getC_Bank() throws RuntimeException;
/** Column name C_BP_BankAccount_ID */
public static final String COLUMNNAME_C_BP_BankAccount_ID = "C_BP_BankAccount_ID";
/** Set Partner Bank Account.
* Bank Account of the Business Partner
*/
public void setC_BP_BankAccount_ID (int C_BP_BankAccount_ID);
/** Get Partner Bank Account.
* Bank Account of the Business Partner
*/
public int getC_BP_BankAccount_ID();
/** Column name C_BP_BankAccount_UU */
public static final String COLUMNNAME_C_BP_BankAccount_UU = "C_BP_BankAccount_UU";
/** Set C_BP_BankAccount_UU */
public void setC_BP_BankAccount_UU (String C_BP_BankAccount_UU);
/** Get C_BP_BankAccount_UU */
public String getC_BP_BankAccount_UU();
/** Column name C_BPartner_ID */
public static final String COLUMNNAME_C_BPartner_ID = "C_BPartner_ID";
@ -261,20 +283,7 @@ public interface I_C_BP_BankAccount
*/
public int getC_BPartner_ID();
public I_C_BPartner getC_BPartner() throws RuntimeException;
/** Column name C_BP_BankAccount_ID */
public static final String COLUMNNAME_C_BP_BankAccount_ID = "C_BP_BankAccount_ID";
/** Set Partner Bank Account.
* Bank Account of the Business Partner
*/
public void setC_BP_BankAccount_ID (int C_BP_BankAccount_ID);
/** Get Partner Bank Account.
* Bank Account of the Business Partner
*/
public int getC_BP_BankAccount_ID();
public org.compiere.model.I_C_BPartner getC_BPartner() throws RuntimeException;
/** Column name Created */
public static final String COLUMNNAME_Created = "Created";
@ -357,6 +366,15 @@ public interface I_C_BP_BankAccount
*/
public String getCreditCardVV();
/** Column name CustomerPaymentProfileID */
public static final String COLUMNNAME_CustomerPaymentProfileID = "CustomerPaymentProfileID";
/** Set Customer Payment Profile ID */
public void setCustomerPaymentProfileID (String CustomerPaymentProfileID);
/** Get Customer Payment Profile ID */
public String getCustomerPaymentProfileID();
/** Column name IsACH */
public static final String COLUMNNAME_IsACH = "IsACH";

View File

@ -88,19 +88,6 @@ public interface I_C_BPartner
*/
public String getAD_Language();
/** Column name AD_OrgBP_ID */
public static final String COLUMNNAME_AD_OrgBP_ID = "AD_OrgBP_ID";
/** Set Linked Organization.
* The Business Partner is another Organization for explicit Inter-Org transactions
*/
public void setAD_OrgBP_ID (String AD_OrgBP_ID);
/** Get Linked Organization.
* The Business Partner is another Organization for explicit Inter-Org transactions
*/
public String getAD_OrgBP_ID();
/** Column name AD_Org_ID */
public static final String COLUMNNAME_AD_Org_ID = "AD_Org_ID";
@ -114,6 +101,19 @@ public interface I_C_BPartner
*/
public int getAD_Org_ID();
/** Column name AD_OrgBP_ID */
public static final String COLUMNNAME_AD_OrgBP_ID = "AD_OrgBP_ID";
/** Set Linked Organization.
* The Business Partner is another Organization for explicit Inter-Org transactions
*/
public void setAD_OrgBP_ID (String AD_OrgBP_ID);
/** Get Linked Organization.
* The Business Partner is another Organization for explicit Inter-Org transactions
*/
public String getAD_OrgBP_ID();
/** Column name BPartner_Parent_ID */
public static final String COLUMNNAME_BPartner_Parent_ID = "BPartner_Parent_ID";
@ -127,6 +127,21 @@ public interface I_C_BPartner
*/
public int getBPartner_Parent_ID();
/** Column name C_BP_Group_ID */
public static final String COLUMNNAME_C_BP_Group_ID = "C_BP_Group_ID";
/** Set Business Partner Group.
* Business Partner Group
*/
public void setC_BP_Group_ID (int C_BP_Group_ID);
/** Get Business Partner Group.
* Business Partner Group
*/
public int getC_BP_Group_ID();
public org.compiere.model.I_C_BP_Group getC_BP_Group() throws RuntimeException;
/** Column name C_BPartner_ID */
public static final String COLUMNNAME_C_BPartner_ID = "C_BPartner_ID";
@ -149,21 +164,6 @@ public interface I_C_BPartner
/** Get C_BPartner_UU */
public String getC_BPartner_UU();
/** Column name C_BP_Group_ID */
public static final String COLUMNNAME_C_BP_Group_ID = "C_BP_Group_ID";
/** Set Business Partner Group.
* Business Partner Group
*/
public void setC_BP_Group_ID (int C_BP_Group_ID);
/** Get Business Partner Group.
* Business Partner Group
*/
public int getC_BP_Group_ID();
public org.compiere.model.I_C_BP_Group getC_BP_Group() throws RuntimeException;
/** Column name C_Dunning_ID */
public static final String COLUMNNAME_C_Dunning_ID = "C_Dunning_ID";
@ -224,6 +224,17 @@ public interface I_C_BPartner
public org.compiere.model.I_C_PaymentTerm getC_PaymentTerm() throws RuntimeException;
/** Column name C_TaxGroup_ID */
public static final String COLUMNNAME_C_TaxGroup_ID = "C_TaxGroup_ID";
/** Set Tax Group */
public void setC_TaxGroup_ID (int C_TaxGroup_ID);
/** Get Tax Group */
public int getC_TaxGroup_ID();
public org.eevolution.model.I_C_TaxGroup getC_TaxGroup() throws RuntimeException;
/** Column name Created */
public static final String COLUMNNAME_Created = "Created";
@ -240,16 +251,14 @@ public interface I_C_BPartner
*/
public int getCreatedBy();
/** Column name C_TaxGroup_ID */
public static final String COLUMNNAME_C_TaxGroup_ID = "C_TaxGroup_ID";
/** Column name CustomerProfileID */
public static final String COLUMNNAME_CustomerProfileID = "CustomerProfileID";
/** Set Tax Group */
public void setC_TaxGroup_ID (int C_TaxGroup_ID);
/** Set Customer Profile ID */
public void setCustomerProfileID (String CustomerProfileID);
/** Get Tax Group */
public int getC_TaxGroup_ID();
public org.eevolution.model.I_C_TaxGroup getC_TaxGroup() throws RuntimeException;
/** Get Customer Profile ID */
public String getCustomerProfileID();
/** Column name DeliveryRule */
public static final String COLUMNNAME_DeliveryRule = "DeliveryRule";
@ -838,19 +847,6 @@ public interface I_C_BPartner
*/
public BigDecimal getSO_CreditLimit();
/** Column name SOCreditStatus */
public static final String COLUMNNAME_SOCreditStatus = "SOCreditStatus";
/** Set Credit Status.
* Business Partner Credit Status
*/
public void setSOCreditStatus (String SOCreditStatus);
/** Get Credit Status.
* Business Partner Credit Status
*/
public String getSOCreditStatus();
/** Column name SO_CreditUsed */
public static final String COLUMNNAME_SO_CreditUsed = "SO_CreditUsed";
@ -877,6 +873,19 @@ public interface I_C_BPartner
*/
public String getSO_Description();
/** Column name SOCreditStatus */
public static final String COLUMNNAME_SOCreditStatus = "SOCreditStatus";
/** Set Credit Status.
* Business Partner Credit Status
*/
public void setSOCreditStatus (String SOCreditStatus);
/** Get Credit Status.
* Business Partner Credit Status
*/
public String getSOCreditStatus();
/** Column name TaxID */
public static final String COLUMNNAME_TaxID = "TaxID";

View File

@ -31,7 +31,7 @@ public interface I_C_BPartner_Location
public static final String Table_Name = "C_BPartner_Location";
/** AD_Table_ID=293 */
public static final int Table_ID = MTable.getTable_ID(Table_Name);
public static final int Table_ID = 293;
KeyNamePair Model = new KeyNamePair(Table_ID, Table_Name);
@ -75,7 +75,7 @@ public interface I_C_BPartner_Location
*/
public int getC_BPartner_ID();
public I_C_BPartner getC_BPartner() throws RuntimeException;
public org.compiere.model.I_C_BPartner getC_BPartner() throws RuntimeException;
/** Column name C_BPartner_Location_ID */
public static final String COLUMNNAME_C_BPartner_Location_ID = "C_BPartner_Location_ID";
@ -90,6 +90,15 @@ public interface I_C_BPartner_Location
*/
public int getC_BPartner_Location_ID();
/** Column name C_BPartner_Location_UU */
public static final String COLUMNNAME_C_BPartner_Location_UU = "C_BPartner_Location_UU";
/** Set C_BPartner_Location_UU */
public void setC_BPartner_Location_UU (String C_BPartner_Location_UU);
/** Get C_BPartner_Location_UU */
public String getC_BPartner_Location_UU();
/** Column name C_Location_ID */
public static final String COLUMNNAME_C_Location_ID = "C_Location_ID";
@ -105,6 +114,21 @@ public interface I_C_BPartner_Location
public I_C_Location getC_Location() throws RuntimeException;
/** Column name C_SalesRegion_ID */
public static final String COLUMNNAME_C_SalesRegion_ID = "C_SalesRegion_ID";
/** Set Sales Region.
* Sales coverage region
*/
public void setC_SalesRegion_ID (int C_SalesRegion_ID);
/** Get Sales Region.
* Sales coverage region
*/
public int getC_SalesRegion_ID();
public org.compiere.model.I_C_SalesRegion getC_SalesRegion() throws RuntimeException;
/** Column name Created */
public static final String COLUMNNAME_Created = "Created";
@ -121,20 +145,14 @@ public interface I_C_BPartner_Location
*/
public int getCreatedBy();
/** Column name C_SalesRegion_ID */
public static final String COLUMNNAME_C_SalesRegion_ID = "C_SalesRegion_ID";
/** Column name CustomerAddressID */
public static final String COLUMNNAME_CustomerAddressID = "CustomerAddressID";
/** Set Sales Region.
* Sales coverage region
*/
public void setC_SalesRegion_ID (int C_SalesRegion_ID);
/** Set Customer Address ID */
public void setCustomerAddressID (String CustomerAddressID);
/** Get Sales Region.
* Sales coverage region
*/
public int getC_SalesRegion_ID();
public I_C_SalesRegion getC_SalesRegion() throws RuntimeException;
/** Get Customer Address ID */
public String getCustomerAddressID();
/** Column name Fax */
public static final String COLUMNNAME_Fax = "Fax";

View File

@ -41,19 +41,6 @@ public interface I_C_Payment
/** Load Meta Data */
/** Column name AccountNo */
public static final String COLUMNNAME_AccountNo = "AccountNo";
/** Set Account No.
* Account Number
*/
public void setAccountNo (String AccountNo);
/** Get Account No.
* Account Number
*/
public String getAccountNo();
/** Column name A_City */
public static final String COLUMNNAME_A_City = "A_City";
@ -80,40 +67,6 @@ public interface I_C_Payment
*/
public String getA_Country();
/** Column name AD_Client_ID */
public static final String COLUMNNAME_AD_Client_ID = "AD_Client_ID";
/** Get Client.
* Client/Tenant for this installation.
*/
public int getAD_Client_ID();
/** Column name AD_Org_ID */
public static final String COLUMNNAME_AD_Org_ID = "AD_Org_ID";
/** Set Organization.
* Organizational entity within client
*/
public void setAD_Org_ID (int AD_Org_ID);
/** Get Organization.
* Organizational entity within client
*/
public int getAD_Org_ID();
/** Column name AD_OrgTrx_ID */
public static final String COLUMNNAME_AD_OrgTrx_ID = "AD_OrgTrx_ID";
/** Set Trx Organization.
* Performing or initiating organization
*/
public void setAD_OrgTrx_ID (int AD_OrgTrx_ID);
/** Get Trx Organization.
* Performing or initiating organization
*/
public int getAD_OrgTrx_ID();
/** Column name A_EMail */
public static final String COLUMNNAME_A_EMail = "A_EMail";
@ -205,6 +158,53 @@ public interface I_C_Payment
*/
public String getA_Zip();
/** Column name AccountNo */
public static final String COLUMNNAME_AccountNo = "AccountNo";
/** Set Account No.
* Account Number
*/
public void setAccountNo (String AccountNo);
/** Get Account No.
* Account Number
*/
public String getAccountNo();
/** Column name AD_Client_ID */
public static final String COLUMNNAME_AD_Client_ID = "AD_Client_ID";
/** Get Client.
* Client/Tenant for this installation.
*/
public int getAD_Client_ID();
/** Column name AD_Org_ID */
public static final String COLUMNNAME_AD_Org_ID = "AD_Org_ID";
/** Set Organization.
* Organizational entity within client
*/
public void setAD_Org_ID (int AD_Org_ID);
/** Get Organization.
* Organizational entity within client
*/
public int getAD_Org_ID();
/** Column name AD_OrgTrx_ID */
public static final String COLUMNNAME_AD_OrgTrx_ID = "AD_OrgTrx_ID";
/** Set Trx Organization.
* Performing or initiating organization
*/
public void setAD_OrgTrx_ID (int AD_OrgTrx_ID);
/** Get Trx Organization.
* Performing or initiating organization
*/
public int getAD_OrgTrx_ID();
/** Column name C_Activity_ID */
public static final String COLUMNNAME_C_Activity_ID = "C_Activity_ID";
@ -235,21 +235,6 @@ public interface I_C_Payment
public org.compiere.model.I_C_BankAccount getC_BankAccount() throws RuntimeException;
/** Column name C_BPartner_ID */
public static final String COLUMNNAME_C_BPartner_ID = "C_BPartner_ID";
/** Set Business Partner .
* Identifies a Business Partner
*/
public void setC_BPartner_ID (int C_BPartner_ID);
/** Get Business Partner .
* Identifies a Business Partner
*/
public int getC_BPartner_ID();
public org.compiere.model.I_C_BPartner getC_BPartner() throws RuntimeException;
/** Column name C_BP_BankAccount_ID */
public static final String COLUMNNAME_C_BP_BankAccount_ID = "C_BP_BankAccount_ID";
@ -265,6 +250,21 @@ public interface I_C_Payment
public org.compiere.model.I_C_BP_BankAccount getC_BP_BankAccount() throws RuntimeException;
/** Column name C_BPartner_ID */
public static final String COLUMNNAME_C_BPartner_ID = "C_BPartner_ID";
/** Set Business Partner .
* Identifies a Business Partner
*/
public void setC_BPartner_ID (int C_BPartner_ID);
/** Get Business Partner .
* Identifies a Business Partner
*/
public int getC_BPartner_ID();
public org.compiere.model.I_C_BPartner getC_BPartner() throws RuntimeException;
/** Column name C_Campaign_ID */
public static final String COLUMNNAME_C_Campaign_ID = "C_Campaign_ID";
@ -355,32 +355,6 @@ public interface I_C_Payment
public org.compiere.model.I_C_DocType getC_DocType() throws RuntimeException;
/** Column name ChargeAmt */
public static final String COLUMNNAME_ChargeAmt = "ChargeAmt";
/** Set Charge amount.
* Charge Amount
*/
public void setChargeAmt (BigDecimal ChargeAmt);
/** Get Charge amount.
* Charge Amount
*/
public BigDecimal getChargeAmt();
/** Column name CheckNo */
public static final String COLUMNNAME_CheckNo = "CheckNo";
/** Set Check No.
* Check Number
*/
public void setCheckNo (String CheckNo);
/** Get Check No.
* Check Number
*/
public String getCheckNo();
/** Column name C_Invoice_ID */
public static final String COLUMNNAME_C_Invoice_ID = "C_Invoice_ID";
@ -411,21 +385,6 @@ public interface I_C_Payment
public org.compiere.model.I_C_Order getC_Order() throws RuntimeException;
/** Column name C_PaymentBatch_ID */
public static final String COLUMNNAME_C_PaymentBatch_ID = "C_PaymentBatch_ID";
/** Set Payment Batch.
* Payment batch for EFT
*/
public void setC_PaymentBatch_ID (int C_PaymentBatch_ID);
/** Get Payment Batch.
* Payment batch for EFT
*/
public int getC_PaymentBatch_ID();
public org.compiere.model.I_C_PaymentBatch getC_PaymentBatch() throws RuntimeException;
/** Column name C_Payment_ID */
public static final String COLUMNNAME_C_Payment_ID = "C_Payment_ID";
@ -448,6 +407,36 @@ public interface I_C_Payment
/** Get C_Payment_UU */
public String getC_Payment_UU();
/** Column name C_PaymentBatch_ID */
public static final String COLUMNNAME_C_PaymentBatch_ID = "C_PaymentBatch_ID";
/** Set Payment Batch.
* Payment batch for EFT
*/
public void setC_PaymentBatch_ID (int C_PaymentBatch_ID);
/** Get Payment Batch.
* Payment batch for EFT
*/
public int getC_PaymentBatch_ID();
public org.compiere.model.I_C_PaymentBatch getC_PaymentBatch() throws RuntimeException;
/** Column name C_PaymentProcessor_ID */
public static final String COLUMNNAME_C_PaymentProcessor_ID = "C_PaymentProcessor_ID";
/** Set Payment Processor.
* Payment processor for electronic payments
*/
public void setC_PaymentProcessor_ID (int C_PaymentProcessor_ID);
/** Get Payment Processor.
* Payment processor for electronic payments
*/
public int getC_PaymentProcessor_ID();
public org.compiere.model.I_C_PaymentProcessor getC_PaymentProcessor() throws RuntimeException;
/** Column name C_POSTenderType_ID */
public static final String COLUMNNAME_C_POSTenderType_ID = "C_POSTenderType_ID";
@ -474,6 +463,32 @@ public interface I_C_Payment
public org.compiere.model.I_C_Project getC_Project() throws RuntimeException;
/** Column name ChargeAmt */
public static final String COLUMNNAME_ChargeAmt = "ChargeAmt";
/** Set Charge amount.
* Charge Amount
*/
public void setChargeAmt (BigDecimal ChargeAmt);
/** Get Charge amount.
* Charge Amount
*/
public BigDecimal getChargeAmt();
/** Column name CheckNo */
public static final String COLUMNNAME_CheckNo = "CheckNo";
/** Set Check No.
* Check Number
*/
public void setCheckNo (String CheckNo);
/** Get Check No.
* Check Number
*/
public String getCheckNo();
/** Column name Created */
public static final String COLUMNNAME_Created = "Created";
@ -555,6 +570,33 @@ public interface I_C_Payment
*/
public String getCreditCardVV();
/** Column name CustomerAddressID */
public static final String COLUMNNAME_CustomerAddressID = "CustomerAddressID";
/** Set Customer Address ID */
public void setCustomerAddressID (String CustomerAddressID);
/** Get Customer Address ID */
public String getCustomerAddressID();
/** Column name CustomerPaymentProfileID */
public static final String COLUMNNAME_CustomerPaymentProfileID = "CustomerPaymentProfileID";
/** Set Customer Payment Profile ID */
public void setCustomerPaymentProfileID (String CustomerPaymentProfileID);
/** Get Customer Payment Profile ID */
public String getCustomerPaymentProfileID();
/** Column name CustomerProfileID */
public static final String COLUMNNAME_CustomerProfileID = "CustomerProfileID";
/** Set Customer Profile ID */
public void setCustomerProfileID (String CustomerProfileID);
/** Get Customer Profile ID */
public String getCustomerProfileID();
/** Column name DateAcct */
public static final String COLUMNNAME_DateAcct = "DateAcct";
@ -776,6 +818,15 @@ public interface I_C_Payment
*/
public boolean isSelfService();
/** Column name IsVoided */
public static final String COLUMNNAME_IsVoided = "IsVoided";
/** Set Voided */
public void setIsVoided (boolean IsVoided);
/** Get Voided */
public boolean isVoided();
/** Column name Micr */
public static final String COLUMNNAME_Micr = "Micr";
@ -967,32 +1018,6 @@ public interface I_C_Payment
*/
public boolean isR_CVV2Match();
/** Column name Ref_Payment_ID */
public static final String COLUMNNAME_Ref_Payment_ID = "Ref_Payment_ID";
/** Set Referenced Payment */
public void setRef_Payment_ID (int Ref_Payment_ID);
/** Get Referenced Payment */
public int getRef_Payment_ID();
public org.compiere.model.I_C_Payment getRef_Payment() throws RuntimeException;
/** Column name Reversal_ID */
public static final String COLUMNNAME_Reversal_ID = "Reversal_ID";
/** Set Reversal ID.
* ID of document reversal
*/
public void setReversal_ID (int Reversal_ID);
/** Get Reversal ID.
* ID of document reversal
*/
public int getReversal_ID();
public org.compiere.model.I_C_Payment getReversal() throws RuntimeException;
/** Column name R_Info */
public static final String COLUMNNAME_R_Info = "R_Info";
@ -1006,19 +1031,6 @@ public interface I_C_Payment
*/
public String getR_Info();
/** Column name RoutingNo */
public static final String COLUMNNAME_RoutingNo = "RoutingNo";
/** Set Routing No.
* Bank Routing Number
*/
public void setRoutingNo (String RoutingNo);
/** Get Routing No.
* Bank Routing Number
*/
public String getRoutingNo();
/** Column name R_PnRef */
public static final String COLUMNNAME_R_PnRef = "R_PnRef";
@ -1071,6 +1083,54 @@ public interface I_C_Payment
*/
public String getR_Result();
/** Column name R_VoidMsg */
public static final String COLUMNNAME_R_VoidMsg = "R_VoidMsg";
/** Set Void Message */
public void setR_VoidMsg (String R_VoidMsg);
/** Get Void Message */
public String getR_VoidMsg();
/** Column name Ref_Payment_ID */
public static final String COLUMNNAME_Ref_Payment_ID = "Ref_Payment_ID";
/** Set Referenced Payment */
public void setRef_Payment_ID (int Ref_Payment_ID);
/** Get Referenced Payment */
public int getRef_Payment_ID();
public org.compiere.model.I_C_Payment getRef_Payment() throws RuntimeException;
/** Column name Reversal_ID */
public static final String COLUMNNAME_Reversal_ID = "Reversal_ID";
/** Set Reversal ID.
* ID of document reversal
*/
public void setReversal_ID (int Reversal_ID);
/** Get Reversal ID.
* ID of document reversal
*/
public int getReversal_ID();
public org.compiere.model.I_C_Payment getReversal() throws RuntimeException;
/** Column name RoutingNo */
public static final String COLUMNNAME_RoutingNo = "RoutingNo";
/** Set Routing No.
* Bank Routing Number
*/
public void setRoutingNo (String RoutingNo);
/** Get Routing No.
* Bank Routing Number
*/
public String getRoutingNo();
/** Column name Swipe */
public static final String COLUMNNAME_Swipe = "Swipe";

View File

@ -0,0 +1,203 @@
package org.compiere.model;
import java.io.Serializable;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Properties;
import java.util.logging.Level;
import org.compiere.util.DB;
import org.compiere.util.DisplayType;
import org.compiere.util.Env;
import org.compiere.util.NamePair;
import org.compiere.util.ValueNamePair;
public class MPaymentLookup extends Lookup implements Serializable {
private static final int PAYMENT_RULE_REFERENCE_ID = 195;
/** Context */
private Properties m_ctx;
/** IsSOTrx */
private boolean m_isSOTrx = false;
/** AD_Column_ID */
private int m_AD_Column_ID;
public MPaymentLookup(Properties ctx, int windowNo, int columnID) {
super(DisplayType.TableDir, windowNo);
m_ctx = ctx;
m_AD_Column_ID = columnID;
m_isSOTrx = "Y".equals(Env.getContext(Env.getCtx(), windowNo, "IsSOTrx"));
}
@Override
public String getDisplay(Object key) {
if (key == null)
return null;
ValueNamePair[] values = getData();
for (ValueNamePair value : values)
{
if(value.getValue().equals(key.toString()))
return value.getName();
}
StringBuilder msgreturn = new StringBuilder("<").append(key.toString()).append(">");
return msgreturn.toString();
}
@Override
public NamePair get(Object key) {
if (key == null)
return null;
ValueNamePair[] values = getData();
for (ValueNamePair value : values)
{
if(value.getValue().equals(key.toString()))
return value;
}
return null;
}
@Override
public boolean containsKey(Object key) {
ValueNamePair[] values = getData();
for (ValueNamePair value : values)
{
if(value.getValue().equals(key.toString()))
return true;
}
return false;
}
@Override
public String getColumnName() {
return "PaymentRule";
}
private ValueNamePair[] getData()
{
String ad_language = Env.getAD_Language(m_ctx);
boolean isBaseLanguage = Env.isBaseLanguage(ad_language, "AD_Ref_List");
StringBuilder sb = new StringBuilder();
if (isBaseLanguage)
sb.append("SELECT r.Value, r.Name FROM AD_Ref_List r WHERE r.AD_Reference_ID=? AND r.IsActive='Y'");
else
{
sb.append("SELECT r.Value, t.Name FROM AD_Ref_List_Trl t");
sb.append(" INNER JOIN AD_Ref_List r ON (r.AD_Ref_List_ID=t.AD_Ref_List_ID)");
sb.append(" WHERE r.AD_Reference_ID=? AND t.AD_Language=? AND r.IsActive='Y'");
}
String wc = getWhereClause();
if (wc != null && wc.length() > 0)
{
wc = wc.replace("AD_Ref_List", "r");
wc = wc.replace("AD_Ref_List_Trl", "t");
sb.append(" AND ").append(wc);
}
if (isBaseLanguage)
sb.append(" ORDER BY r.Name");
else
sb.append(" ORDER BY t.Name");
PreparedStatement pstmt = null;
ResultSet rs = null;
ArrayList<ValueNamePair> list = new ArrayList<ValueNamePair>();
try
{
pstmt = DB.prepareStatement(sb.toString(), null);
pstmt.setInt(1, PAYMENT_RULE_REFERENCE_ID);
if (!isBaseLanguage)
pstmt.setString(2, ad_language);
rs = pstmt.executeQuery();
while (rs.next())
list.add(new ValueNamePair(rs.getString(1), rs.getString(2)));
rs.close();
pstmt.close();
pstmt = null;
}
catch (SQLException e)
{
log.log(Level.SEVERE, sb.toString(), e);
}
finally
{
DB.close(rs, pstmt);
rs = null; pstmt = null;
}
ValueNamePair[] retValue = new ValueNamePair[list.size()];
list.toArray(retValue);
return retValue;
}
public String getValidation()
{
StringBuilder sb = new StringBuilder();
sb.append("SELECT vr.Code ");
sb.append("FROM AD_Column c");
sb.append(" LEFT OUTER JOIN AD_Val_Rule vr ON (c.AD_Val_Rule_ID=vr.AD_Val_Rule_ID) ");
sb.append("WHERE c.AD_Column_ID=?");
String validation = DB.getSQLValueString(null, sb.toString(), m_AD_Column_ID);
if (validation == null)
return "";
return validation.trim();
}
private String getWhereClause()
{
String whereClause = "";
String validation = getValidation();
if (validation == null)
validation = "";
if (whereClause.length() == 0)
whereClause = validation;
else if (validation.length() > 0)
whereClause += " AND " + validation;
if (whereClause.indexOf('@') != -1)
{
String validated = Env.parseContext(Env.getCtx(), getWindowNo(), whereClause, false);
if (validated.length() == 0)
log.severe(getColumnName() + " - Cannot Parse=" + whereClause);
else
{
log.fine(getColumnName() + " - Parsed: " + validated);
return validated;
}
}
return whereClause;
}
@Override
public ArrayList<Object> getData(boolean mandatory, boolean onlyValidated,
boolean onlyActive, boolean temporary) {
ArrayList<Object> list = new ArrayList<Object>();
ValueNamePair[] values = getData();
for (ValueNamePair value : values)
{
String PaymentRule = value.getValue();
if (MInvoice.PAYMENTRULE_DirectDebit.equals(PaymentRule) // SO
&& !m_isSOTrx)
continue;
else if (MInvoice.PAYMENTRULE_DirectDeposit.equals(PaymentRule) // PO
&& m_isSOTrx)
continue;
list.add(value);
}
return list;
}
@Override
public int refresh() {
fillComboBox(isMandatory(), true, true, false);
return super.getSize();
}
}

View File

@ -148,6 +148,7 @@ public class MSession extends X_AD_Session
public MSession (Properties ctx, String Remote_Addr, String Remote_Host, String WebSession, String trxName)
{
this (ctx, 0, trxName);
setServerName(Ini.getProperties().getProperty("ServerName"));
if (Remote_Addr != null)
setRemote_Addr(Remote_Addr);
if (Remote_Host != null)
@ -172,6 +173,7 @@ public class MSession extends X_AD_Session
try
{
InetAddress lh = InetAddress.getLocalHost();
setServerName(Ini.getProperties().getProperty("ServerName"));
setRemote_Addr(lh.getHostAddress());
setRemote_Host(lh.getHostName());
setDescription(Adempiere.MAIN_VERSION + "_"

View File

@ -96,6 +96,7 @@ public class SystemIDs
public final static int REFERENCE_DATATYPE_LOCATOR = 31;
public final static int REFERENCE_DATATYPE_MEMO = 34;
public final static int REFERENCE_DATATYPE_NUMBER = 22;
public final static int REFERENCE_DATATYPE_PAYMENT = 200012;
public final static int REFERENCE_DATATYPE_PRINTNAME = 42;
public final static int REFERENCE_DATATYPE_PRODUCTATTRIBUTE = 35;
public final static int REFERENCE_DATATYPE_QUANTITY = 29;

View File

@ -220,6 +220,20 @@ public class X_AD_Session extends PO implements I_AD_Session, I_Persistent
return (String)get_Value(COLUMNNAME_Remote_Host);
}
/** Set Server name.
@param ServerName Server name */
public void setServerName (String ServerName)
{
set_Value (COLUMNNAME_ServerName, ServerName);
}
/** Get Server name.
@return Server name */
public String getServerName ()
{
return (String)get_Value(COLUMNNAME_ServerName);
}
/** Set Web Session.
@param WebSession
Web Session ID

View File

@ -30,7 +30,7 @@ public class X_C_BP_BankAccount extends PO implements I_C_BP_BankAccount, I_Pers
/**
*
*/
private static final long serialVersionUID = 20100614L;
private static final long serialVersionUID = 20121012L;
/** Standard Constructor */
public X_C_BP_BankAccount (Properties ctx, int C_BP_BankAccount_ID, String trxName)
@ -39,8 +39,8 @@ public class X_C_BP_BankAccount extends PO implements I_C_BP_BankAccount, I_Pers
/** if (C_BP_BankAccount_ID == 0)
{
setA_Name (null);
setC_BPartner_ID (0);
setC_BP_BankAccount_ID (0);
setC_BPartner_ID (0);
setIsACH (false);
} */
}
@ -73,23 +73,6 @@ public class X_C_BP_BankAccount extends PO implements I_C_BP_BankAccount, I_Pers
return sb.toString();
}
/** Set Account No.
@param AccountNo
Account Number
*/
public void setAccountNo (String AccountNo)
{
set_Value (COLUMNNAME_AccountNo, AccountNo);
}
/** Get Account No.
@return Account Number
*/
public String getAccountNo ()
{
return (String)get_Value(COLUMNNAME_AccountNo);
}
/** Set Account City.
@param A_City
City or the Credit Card or Account Holder
@ -124,34 +107,6 @@ public class X_C_BP_BankAccount extends PO implements I_C_BP_BankAccount, I_Pers
return (String)get_Value(COLUMNNAME_A_Country);
}
public I_AD_User getAD_User() throws RuntimeException
{
return (I_AD_User)MTable.get(getCtx(), I_AD_User.Table_Name)
.getPO(getAD_User_ID(), get_TrxName()); }
/** Set User/Contact.
@param AD_User_ID
User within the system - Internal or Business Partner Contact
*/
public void setAD_User_ID (int AD_User_ID)
{
if (AD_User_ID < 1)
set_Value (COLUMNNAME_AD_User_ID, null);
else
set_Value (COLUMNNAME_AD_User_ID, Integer.valueOf(AD_User_ID));
}
/** Get User/Contact.
@return User within the system - Internal or Business Partner Contact
*/
public int getAD_User_ID ()
{
Integer ii = (Integer)get_Value(COLUMNNAME_AD_User_ID);
if (ii == null)
return 0;
return ii.intValue();
}
/** Set Account EMail.
@param A_EMail
Email Address
@ -279,12 +234,61 @@ public class X_C_BP_BankAccount extends PO implements I_C_BP_BankAccount, I_Pers
return (String)get_Value(COLUMNNAME_A_Zip);
}
/** Set Account No.
@param AccountNo
Account Number
*/
public void setAccountNo (String AccountNo)
{
set_Value (COLUMNNAME_AccountNo, AccountNo);
}
/** Get Account No.
@return Account Number
*/
public String getAccountNo ()
{
return (String)get_Value(COLUMNNAME_AccountNo);
}
public org.compiere.model.I_AD_User getAD_User() throws RuntimeException
{
return (org.compiere.model.I_AD_User)MTable.get(getCtx(), org.compiere.model.I_AD_User.Table_Name)
.getPO(getAD_User_ID(), get_TrxName()); }
/** Set User/Contact.
@param AD_User_ID
User within the system - Internal or Business Partner Contact
*/
public void setAD_User_ID (int AD_User_ID)
{
if (AD_User_ID < 1)
set_Value (COLUMNNAME_AD_User_ID, null);
else
set_Value (COLUMNNAME_AD_User_ID, Integer.valueOf(AD_User_ID));
}
/** Get User/Contact.
@return User within the system - Internal or Business Partner Contact
*/
public int getAD_User_ID ()
{
Integer ii = (Integer)get_Value(COLUMNNAME_AD_User_ID);
if (ii == null)
return 0;
return ii.intValue();
}
/** BankAccountType AD_Reference_ID=216 */
public static final int BANKACCOUNTTYPE_AD_Reference_ID=216;
/** Checking = C */
public static final String BANKACCOUNTTYPE_Checking = "C";
/** Savings = S */
public static final String BANKACCOUNTTYPE_Savings = "S";
/** Cash = B */
public static final String BANKACCOUNTTYPE_Cash = "B";
/** Card = D */
public static final String BANKACCOUNTTYPE_Card = "D";
/** Set Bank Account Type.
@param BankAccountType
Bank Account Type
@ -331,9 +335,9 @@ public class X_C_BP_BankAccount extends PO implements I_C_BP_BankAccount, I_Pers
return (String)get_Value(COLUMNNAME_BPBankAcctUse);
}
public I_C_Bank getC_Bank() throws RuntimeException
public org.compiere.model.I_C_Bank getC_Bank() throws RuntimeException
{
return (I_C_Bank)MTable.get(getCtx(), I_C_Bank.Table_Name)
return (org.compiere.model.I_C_Bank)MTable.get(getCtx(), org.compiere.model.I_C_Bank.Table_Name)
.getPO(getC_Bank_ID(), get_TrxName()); }
/** Set Bank.
@ -359,9 +363,46 @@ public class X_C_BP_BankAccount extends PO implements I_C_BP_BankAccount, I_Pers
return ii.intValue();
}
public I_C_BPartner getC_BPartner() throws RuntimeException
/** Set Partner Bank Account.
@param C_BP_BankAccount_ID
Bank Account of the Business Partner
*/
public void setC_BP_BankAccount_ID (int C_BP_BankAccount_ID)
{
if (C_BP_BankAccount_ID < 1)
set_ValueNoCheck (COLUMNNAME_C_BP_BankAccount_ID, null);
else
set_ValueNoCheck (COLUMNNAME_C_BP_BankAccount_ID, Integer.valueOf(C_BP_BankAccount_ID));
}
/** Get Partner Bank Account.
@return Bank Account of the Business Partner
*/
public int getC_BP_BankAccount_ID ()
{
Integer ii = (Integer)get_Value(COLUMNNAME_C_BP_BankAccount_ID);
if (ii == null)
return 0;
return ii.intValue();
}
/** Set C_BP_BankAccount_UU.
@param C_BP_BankAccount_UU C_BP_BankAccount_UU */
public void setC_BP_BankAccount_UU (String C_BP_BankAccount_UU)
{
set_Value (COLUMNNAME_C_BP_BankAccount_UU, C_BP_BankAccount_UU);
}
/** Get C_BP_BankAccount_UU.
@return C_BP_BankAccount_UU */
public String getC_BP_BankAccount_UU ()
{
return (String)get_Value(COLUMNNAME_C_BP_BankAccount_UU);
}
public org.compiere.model.I_C_BPartner getC_BPartner() throws RuntimeException
{
return (I_C_BPartner)MTable.get(getCtx(), I_C_BPartner.Table_Name)
return (org.compiere.model.I_C_BPartner)MTable.get(getCtx(), org.compiere.model.I_C_BPartner.Table_Name)
.getPO(getC_BPartner_ID(), get_TrxName()); }
/** Set Business Partner .
@ -387,29 +428,6 @@ public class X_C_BP_BankAccount extends PO implements I_C_BP_BankAccount, I_Pers
return ii.intValue();
}
/** Set Partner Bank Account.
@param C_BP_BankAccount_ID
Bank Account of the Business Partner
*/
public void setC_BP_BankAccount_ID (int C_BP_BankAccount_ID)
{
if (C_BP_BankAccount_ID < 1)
set_ValueNoCheck (COLUMNNAME_C_BP_BankAccount_ID, null);
else
set_ValueNoCheck (COLUMNNAME_C_BP_BankAccount_ID, Integer.valueOf(C_BP_BankAccount_ID));
}
/** Get Partner Bank Account.
@return Bank Account of the Business Partner
*/
public int getC_BP_BankAccount_ID ()
{
Integer ii = (Integer)get_Value(COLUMNNAME_C_BP_BankAccount_ID);
if (ii == null)
return 0;
return ii.intValue();
}
/** Set Exp. Month.
@param CreditCardExpMM
Expiry Month
@ -518,6 +536,20 @@ public class X_C_BP_BankAccount extends PO implements I_C_BP_BankAccount, I_Pers
return (String)get_Value(COLUMNNAME_CreditCardVV);
}
/** Set Customer Payment Profile ID.
@param CustomerPaymentProfileID Customer Payment Profile ID */
public void setCustomerPaymentProfileID (String CustomerPaymentProfileID)
{
set_Value (COLUMNNAME_CustomerPaymentProfileID, CustomerPaymentProfileID);
}
/** Get Customer Payment Profile ID.
@return Customer Payment Profile ID */
public String getCustomerPaymentProfileID ()
{
return (String)get_Value(COLUMNNAME_CustomerPaymentProfileID);
}
/** Set ACH.
@param IsACH
Automatic Clearing House

View File

@ -33,7 +33,7 @@ public class X_C_BPartner extends PO implements I_C_BPartner, I_Persistent
/**
*
*/
private static final long serialVersionUID = 20120906L;
private static final long serialVersionUID = 20121012L;
/** Standard Constructor */
public X_C_BPartner (Properties ctx, int C_BPartner_ID, String trxName)
@ -41,8 +41,8 @@ public class X_C_BPartner extends PO implements I_C_BPartner, I_Persistent
super (ctx, C_BPartner_ID, trxName);
/** if (C_BPartner_ID == 0)
{
setC_BPartner_ID (0);
setC_BP_Group_ID (0);
setC_BPartner_ID (0);
setIsCustomer (false);
setIsEmployee (false);
setIsOneTime (false);
@ -188,6 +188,34 @@ public class X_C_BPartner extends PO implements I_C_BPartner, I_Persistent
return ii.intValue();
}
public org.compiere.model.I_C_BP_Group getC_BP_Group() throws RuntimeException
{
return (org.compiere.model.I_C_BP_Group)MTable.get(getCtx(), org.compiere.model.I_C_BP_Group.Table_Name)
.getPO(getC_BP_Group_ID(), get_TrxName()); }
/** Set Business Partner Group.
@param C_BP_Group_ID
Business Partner Group
*/
public void setC_BP_Group_ID (int C_BP_Group_ID)
{
if (C_BP_Group_ID < 1)
set_Value (COLUMNNAME_C_BP_Group_ID, null);
else
set_Value (COLUMNNAME_C_BP_Group_ID, Integer.valueOf(C_BP_Group_ID));
}
/** Get Business Partner Group.
@return Business Partner Group
*/
public int getC_BP_Group_ID ()
{
Integer ii = (Integer)get_Value(COLUMNNAME_C_BP_Group_ID);
if (ii == null)
return 0;
return ii.intValue();
}
/** Set Business Partner .
@param C_BPartner_ID
Identifies a Business Partner
@ -225,34 +253,6 @@ public class X_C_BPartner extends PO implements I_C_BPartner, I_Persistent
return (String)get_Value(COLUMNNAME_C_BPartner_UU);
}
public org.compiere.model.I_C_BP_Group getC_BP_Group() throws RuntimeException
{
return (org.compiere.model.I_C_BP_Group)MTable.get(getCtx(), org.compiere.model.I_C_BP_Group.Table_Name)
.getPO(getC_BP_Group_ID(), get_TrxName()); }
/** Set Business Partner Group.
@param C_BP_Group_ID
Business Partner Group
*/
public void setC_BP_Group_ID (int C_BP_Group_ID)
{
if (C_BP_Group_ID < 1)
set_Value (COLUMNNAME_C_BP_Group_ID, null);
else
set_Value (COLUMNNAME_C_BP_Group_ID, Integer.valueOf(C_BP_Group_ID));
}
/** Get Business Partner Group.
@return Business Partner Group
*/
public int getC_BP_Group_ID ()
{
Integer ii = (Integer)get_Value(COLUMNNAME_C_BP_Group_ID);
if (ii == null)
return 0;
return ii.intValue();
}
public org.compiere.model.I_C_Dunning getC_Dunning() throws RuntimeException
{
return (org.compiere.model.I_C_Dunning)MTable.get(getCtx(), org.compiere.model.I_C_Dunning.Table_Name)
@ -390,6 +390,20 @@ public class X_C_BPartner extends PO implements I_C_BPartner, I_Persistent
return ii.intValue();
}
/** Set Customer Profile ID.
@param CustomerProfileID Customer Profile ID */
public void setCustomerProfileID (String CustomerProfileID)
{
set_Value (COLUMNNAME_CustomerProfileID, CustomerProfileID);
}
/** Get Customer Profile ID.
@return Customer Profile ID */
public String getCustomerProfileID ()
{
return (String)get_Value(COLUMNNAME_CustomerProfileID);
}
/** DeliveryRule AD_Reference_ID=151 */
public static final int DELIVERYRULE_AD_Reference_ID=151;
/** After Receipt = R */
@ -1408,36 +1422,6 @@ public class X_C_BPartner extends PO implements I_C_BPartner, I_Persistent
return bd;
}
/** SOCreditStatus AD_Reference_ID=289 */
public static final int SOCREDITSTATUS_AD_Reference_ID=289;
/** Credit Stop = S */
public static final String SOCREDITSTATUS_CreditStop = "S";
/** Credit Hold = H */
public static final String SOCREDITSTATUS_CreditHold = "H";
/** Credit Watch = W */
public static final String SOCREDITSTATUS_CreditWatch = "W";
/** No Credit Check = X */
public static final String SOCREDITSTATUS_NoCreditCheck = "X";
/** Credit OK = O */
public static final String SOCREDITSTATUS_CreditOK = "O";
/** Set Credit Status.
@param SOCreditStatus
Business Partner Credit Status
*/
public void setSOCreditStatus (String SOCreditStatus)
{
set_Value (COLUMNNAME_SOCreditStatus, SOCreditStatus);
}
/** Get Credit Status.
@return Business Partner Credit Status
*/
public String getSOCreditStatus ()
{
return (String)get_Value(COLUMNNAME_SOCreditStatus);
}
/** Set Credit Used.
@param SO_CreditUsed
Current open balance
@ -1475,6 +1459,36 @@ public class X_C_BPartner extends PO implements I_C_BPartner, I_Persistent
return (String)get_Value(COLUMNNAME_SO_Description);
}
/** SOCreditStatus AD_Reference_ID=289 */
public static final int SOCREDITSTATUS_AD_Reference_ID=289;
/** Credit Stop = S */
public static final String SOCREDITSTATUS_CreditStop = "S";
/** Credit Hold = H */
public static final String SOCREDITSTATUS_CreditHold = "H";
/** Credit Watch = W */
public static final String SOCREDITSTATUS_CreditWatch = "W";
/** No Credit Check = X */
public static final String SOCREDITSTATUS_NoCreditCheck = "X";
/** Credit OK = O */
public static final String SOCREDITSTATUS_CreditOK = "O";
/** Set Credit Status.
@param SOCreditStatus
Business Partner Credit Status
*/
public void setSOCreditStatus (String SOCreditStatus)
{
set_Value (COLUMNNAME_SOCreditStatus, SOCreditStatus);
}
/** Get Credit Status.
@return Business Partner Credit Status
*/
public String getSOCreditStatus ()
{
return (String)get_Value(COLUMNNAME_SOCreditStatus);
}
/** Set Tax ID.
@param TaxID
Tax Identification

View File

@ -30,7 +30,7 @@ public class X_C_BPartner_Location extends PO implements I_C_BPartner_Location,
/**
*
*/
private static final long serialVersionUID = 20100614L;
private static final long serialVersionUID = 20121012L;
/** Standard Constructor */
public X_C_BPartner_Location (Properties ctx, int C_BPartner_Location_ID, String trxName)
@ -82,9 +82,9 @@ public class X_C_BPartner_Location extends PO implements I_C_BPartner_Location,
return sb.toString();
}
public I_C_BPartner getC_BPartner() throws RuntimeException
public org.compiere.model.I_C_BPartner getC_BPartner() throws RuntimeException
{
return (I_C_BPartner)MTable.get(getCtx(), I_C_BPartner.Table_Name)
return (org.compiere.model.I_C_BPartner)MTable.get(getCtx(), org.compiere.model.I_C_BPartner.Table_Name)
.getPO(getC_BPartner_ID(), get_TrxName()); }
/** Set Business Partner .
@ -133,6 +133,20 @@ public class X_C_BPartner_Location extends PO implements I_C_BPartner_Location,
return ii.intValue();
}
/** Set C_BPartner_Location_UU.
@param C_BPartner_Location_UU C_BPartner_Location_UU */
public void setC_BPartner_Location_UU (String C_BPartner_Location_UU)
{
set_Value (COLUMNNAME_C_BPartner_Location_UU, C_BPartner_Location_UU);
}
/** Get C_BPartner_Location_UU.
@return C_BPartner_Location_UU */
public String getC_BPartner_Location_UU ()
{
return (String)get_Value(COLUMNNAME_C_BPartner_Location_UU);
}
public I_C_Location getC_Location() throws RuntimeException
{
return (I_C_Location)MTable.get(getCtx(), I_C_Location.Table_Name)
@ -161,9 +175,9 @@ public class X_C_BPartner_Location extends PO implements I_C_BPartner_Location,
return ii.intValue();
}
public I_C_SalesRegion getC_SalesRegion() throws RuntimeException
public org.compiere.model.I_C_SalesRegion getC_SalesRegion() throws RuntimeException
{
return (I_C_SalesRegion)MTable.get(getCtx(), I_C_SalesRegion.Table_Name)
return (org.compiere.model.I_C_SalesRegion)MTable.get(getCtx(), org.compiere.model.I_C_SalesRegion.Table_Name)
.getPO(getC_SalesRegion_ID(), get_TrxName()); }
/** Set Sales Region.
@ -189,6 +203,20 @@ public class X_C_BPartner_Location extends PO implements I_C_BPartner_Location,
return ii.intValue();
}
/** Set Customer Address ID.
@param CustomerAddressID Customer Address ID */
public void setCustomerAddressID (String CustomerAddressID)
{
set_Value (COLUMNNAME_CustomerAddressID, CustomerAddressID);
}
/** Get Customer Address ID.
@return Customer Address ID */
public String getCustomerAddressID ()
{
return (String)get_Value(COLUMNNAME_CustomerAddressID);
}
/** Set Fax.
@param Fax
Facsimile number

View File

@ -33,7 +33,7 @@ public class X_C_Payment extends PO implements I_C_Payment, I_Persistent
/**
*
*/
private static final long serialVersionUID = 20120906L;
private static final long serialVersionUID = 20121012L;
/** Standard Constructor */
public X_C_Payment (Properties ctx, int C_Payment_ID, String trxName)
@ -65,6 +65,8 @@ public class X_C_Payment extends PO implements I_C_Payment, I_Persistent
setIsReceipt (false);
setIsReconciled (false);
setIsSelfService (false);
setIsVoided (false);
// N
setPayAmt (Env.ZERO);
// 0
setPosted (false);
@ -105,23 +107,6 @@ public class X_C_Payment extends PO implements I_C_Payment, I_Persistent
return sb.toString();
}
/** Set Account No.
@param AccountNo
Account Number
*/
public void setAccountNo (String AccountNo)
{
set_Value (COLUMNNAME_AccountNo, AccountNo);
}
/** Get Account No.
@return Account Number
*/
public String getAccountNo ()
{
return (String)get_Value(COLUMNNAME_AccountNo);
}
/** Set Account City.
@param A_City
City or the Credit Card or Account Holder
@ -156,29 +141,6 @@ public class X_C_Payment extends PO implements I_C_Payment, I_Persistent
return (String)get_Value(COLUMNNAME_A_Country);
}
/** Set Trx Organization.
@param AD_OrgTrx_ID
Performing or initiating organization
*/
public void setAD_OrgTrx_ID (int AD_OrgTrx_ID)
{
if (AD_OrgTrx_ID < 1)
set_Value (COLUMNNAME_AD_OrgTrx_ID, null);
else
set_Value (COLUMNNAME_AD_OrgTrx_ID, Integer.valueOf(AD_OrgTrx_ID));
}
/** Get Trx Organization.
@return Performing or initiating organization
*/
public int getAD_OrgTrx_ID ()
{
Integer ii = (Integer)get_Value(COLUMNNAME_AD_OrgTrx_ID);
if (ii == null)
return 0;
return ii.intValue();
}
/** Set Account EMail.
@param A_EMail
Email Address
@ -298,6 +260,46 @@ public class X_C_Payment extends PO implements I_C_Payment, I_Persistent
return (String)get_Value(COLUMNNAME_A_Zip);
}
/** Set Account No.
@param AccountNo
Account Number
*/
public void setAccountNo (String AccountNo)
{
set_Value (COLUMNNAME_AccountNo, AccountNo);
}
/** Get Account No.
@return Account Number
*/
public String getAccountNo ()
{
return (String)get_Value(COLUMNNAME_AccountNo);
}
/** Set Trx Organization.
@param AD_OrgTrx_ID
Performing or initiating organization
*/
public void setAD_OrgTrx_ID (int AD_OrgTrx_ID)
{
if (AD_OrgTrx_ID < 1)
set_Value (COLUMNNAME_AD_OrgTrx_ID, null);
else
set_Value (COLUMNNAME_AD_OrgTrx_ID, Integer.valueOf(AD_OrgTrx_ID));
}
/** Get Trx Organization.
@return Performing or initiating organization
*/
public int getAD_OrgTrx_ID ()
{
Integer ii = (Integer)get_Value(COLUMNNAME_AD_OrgTrx_ID);
if (ii == null)
return 0;
return ii.intValue();
}
public org.compiere.model.I_C_Activity getC_Activity() throws RuntimeException
{
return (org.compiere.model.I_C_Activity)MTable.get(getCtx(), org.compiere.model.I_C_Activity.Table_Name)
@ -354,34 +356,6 @@ public class X_C_Payment extends PO implements I_C_Payment, I_Persistent
return ii.intValue();
}
public org.compiere.model.I_C_BPartner getC_BPartner() throws RuntimeException
{
return (org.compiere.model.I_C_BPartner)MTable.get(getCtx(), org.compiere.model.I_C_BPartner.Table_Name)
.getPO(getC_BPartner_ID(), get_TrxName()); }
/** Set Business Partner .
@param C_BPartner_ID
Identifies a Business Partner
*/
public void setC_BPartner_ID (int C_BPartner_ID)
{
if (C_BPartner_ID < 1)
set_Value (COLUMNNAME_C_BPartner_ID, null);
else
set_Value (COLUMNNAME_C_BPartner_ID, Integer.valueOf(C_BPartner_ID));
}
/** Get Business Partner .
@return Identifies a Business Partner
*/
public int getC_BPartner_ID ()
{
Integer ii = (Integer)get_Value(COLUMNNAME_C_BPartner_ID);
if (ii == null)
return 0;
return ii.intValue();
}
public org.compiere.model.I_C_BP_BankAccount getC_BP_BankAccount() throws RuntimeException
{
return (org.compiere.model.I_C_BP_BankAccount)MTable.get(getCtx(), org.compiere.model.I_C_BP_BankAccount.Table_Name)
@ -410,6 +384,34 @@ public class X_C_Payment extends PO implements I_C_Payment, I_Persistent
return ii.intValue();
}
public org.compiere.model.I_C_BPartner getC_BPartner() throws RuntimeException
{
return (org.compiere.model.I_C_BPartner)MTable.get(getCtx(), org.compiere.model.I_C_BPartner.Table_Name)
.getPO(getC_BPartner_ID(), get_TrxName()); }
/** Set Business Partner .
@param C_BPartner_ID
Identifies a Business Partner
*/
public void setC_BPartner_ID (int C_BPartner_ID)
{
if (C_BPartner_ID < 1)
set_Value (COLUMNNAME_C_BPartner_ID, null);
else
set_Value (COLUMNNAME_C_BPartner_ID, Integer.valueOf(C_BPartner_ID));
}
/** Get Business Partner .
@return Identifies a Business Partner
*/
public int getC_BPartner_ID ()
{
Integer ii = (Integer)get_Value(COLUMNNAME_C_BPartner_ID);
if (ii == null)
return 0;
return ii.intValue();
}
public org.compiere.model.I_C_Campaign getC_Campaign() throws RuntimeException
{
return (org.compiere.model.I_C_Campaign)MTable.get(getCtx(), org.compiere.model.I_C_Campaign.Table_Name)
@ -578,43 +580,6 @@ public class X_C_Payment extends PO implements I_C_Payment, I_Persistent
return ii.intValue();
}
/** Set Charge amount.
@param ChargeAmt
Charge Amount
*/
public void setChargeAmt (BigDecimal ChargeAmt)
{
set_Value (COLUMNNAME_ChargeAmt, ChargeAmt);
}
/** Get Charge amount.
@return Charge Amount
*/
public BigDecimal getChargeAmt ()
{
BigDecimal bd = (BigDecimal)get_Value(COLUMNNAME_ChargeAmt);
if (bd == null)
return Env.ZERO;
return bd;
}
/** Set Check No.
@param CheckNo
Check Number
*/
public void setCheckNo (String CheckNo)
{
set_Value (COLUMNNAME_CheckNo, CheckNo);
}
/** Get Check No.
@return Check Number
*/
public String getCheckNo ()
{
return (String)get_Value(COLUMNNAME_CheckNo);
}
public org.compiere.model.I_C_Invoice getC_Invoice() throws RuntimeException
{
return (org.compiere.model.I_C_Invoice)MTable.get(getCtx(), org.compiere.model.I_C_Invoice.Table_Name)
@ -671,34 +636,6 @@ public class X_C_Payment extends PO implements I_C_Payment, I_Persistent
return ii.intValue();
}
public org.compiere.model.I_C_PaymentBatch getC_PaymentBatch() throws RuntimeException
{
return (org.compiere.model.I_C_PaymentBatch)MTable.get(getCtx(), org.compiere.model.I_C_PaymentBatch.Table_Name)
.getPO(getC_PaymentBatch_ID(), get_TrxName()); }
/** Set Payment Batch.
@param C_PaymentBatch_ID
Payment batch for EFT
*/
public void setC_PaymentBatch_ID (int C_PaymentBatch_ID)
{
if (C_PaymentBatch_ID < 1)
set_Value (COLUMNNAME_C_PaymentBatch_ID, null);
else
set_Value (COLUMNNAME_C_PaymentBatch_ID, Integer.valueOf(C_PaymentBatch_ID));
}
/** Get Payment Batch.
@return Payment batch for EFT
*/
public int getC_PaymentBatch_ID ()
{
Integer ii = (Integer)get_Value(COLUMNNAME_C_PaymentBatch_ID);
if (ii == null)
return 0;
return ii.intValue();
}
/** Set Payment.
@param C_Payment_ID
Payment identifier
@ -736,6 +673,62 @@ public class X_C_Payment extends PO implements I_C_Payment, I_Persistent
return (String)get_Value(COLUMNNAME_C_Payment_UU);
}
public org.compiere.model.I_C_PaymentBatch getC_PaymentBatch() throws RuntimeException
{
return (org.compiere.model.I_C_PaymentBatch)MTable.get(getCtx(), org.compiere.model.I_C_PaymentBatch.Table_Name)
.getPO(getC_PaymentBatch_ID(), get_TrxName()); }
/** Set Payment Batch.
@param C_PaymentBatch_ID
Payment batch for EFT
*/
public void setC_PaymentBatch_ID (int C_PaymentBatch_ID)
{
if (C_PaymentBatch_ID < 1)
set_Value (COLUMNNAME_C_PaymentBatch_ID, null);
else
set_Value (COLUMNNAME_C_PaymentBatch_ID, Integer.valueOf(C_PaymentBatch_ID));
}
/** Get Payment Batch.
@return Payment batch for EFT
*/
public int getC_PaymentBatch_ID ()
{
Integer ii = (Integer)get_Value(COLUMNNAME_C_PaymentBatch_ID);
if (ii == null)
return 0;
return ii.intValue();
}
public org.compiere.model.I_C_PaymentProcessor getC_PaymentProcessor() throws RuntimeException
{
return (org.compiere.model.I_C_PaymentProcessor)MTable.get(getCtx(), org.compiere.model.I_C_PaymentProcessor.Table_Name)
.getPO(getC_PaymentProcessor_ID(), get_TrxName()); }
/** Set Payment Processor.
@param C_PaymentProcessor_ID
Payment processor for electronic payments
*/
public void setC_PaymentProcessor_ID (int C_PaymentProcessor_ID)
{
if (C_PaymentProcessor_ID < 1)
set_Value (COLUMNNAME_C_PaymentProcessor_ID, null);
else
set_Value (COLUMNNAME_C_PaymentProcessor_ID, Integer.valueOf(C_PaymentProcessor_ID));
}
/** Get Payment Processor.
@return Payment processor for electronic payments
*/
public int getC_PaymentProcessor_ID ()
{
Integer ii = (Integer)get_Value(COLUMNNAME_C_PaymentProcessor_ID);
if (ii == null)
return 0;
return ii.intValue();
}
public org.compiere.model.I_C_POSTenderType getC_POSTenderType() throws RuntimeException
{
return (org.compiere.model.I_C_POSTenderType)MTable.get(getCtx(), org.compiere.model.I_C_POSTenderType.Table_Name)
@ -789,6 +782,43 @@ public class X_C_Payment extends PO implements I_C_Payment, I_Persistent
return ii.intValue();
}
/** Set Charge amount.
@param ChargeAmt
Charge Amount
*/
public void setChargeAmt (BigDecimal ChargeAmt)
{
set_Value (COLUMNNAME_ChargeAmt, ChargeAmt);
}
/** Get Charge amount.
@return Charge Amount
*/
public BigDecimal getChargeAmt ()
{
BigDecimal bd = (BigDecimal)get_Value(COLUMNNAME_ChargeAmt);
if (bd == null)
return Env.ZERO;
return bd;
}
/** Set Check No.
@param CheckNo
Check Number
*/
public void setCheckNo (String CheckNo)
{
set_Value (COLUMNNAME_CheckNo, CheckNo);
}
/** Get Check No.
@return Check Number
*/
public String getCheckNo ()
{
return (String)get_Value(COLUMNNAME_CheckNo);
}
/** Set Exp. Month.
@param CreditCardExpMM
Expiry Month
@ -897,6 +927,48 @@ public class X_C_Payment extends PO implements I_C_Payment, I_Persistent
return (String)get_Value(COLUMNNAME_CreditCardVV);
}
/** Set Customer Address ID.
@param CustomerAddressID Customer Address ID */
public void setCustomerAddressID (String CustomerAddressID)
{
set_Value (COLUMNNAME_CustomerAddressID, CustomerAddressID);
}
/** Get Customer Address ID.
@return Customer Address ID */
public String getCustomerAddressID ()
{
return (String)get_Value(COLUMNNAME_CustomerAddressID);
}
/** Set Customer Payment Profile ID.
@param CustomerPaymentProfileID Customer Payment Profile ID */
public void setCustomerPaymentProfileID (String CustomerPaymentProfileID)
{
set_Value (COLUMNNAME_CustomerPaymentProfileID, CustomerPaymentProfileID);
}
/** Get Customer Payment Profile ID.
@return Customer Payment Profile ID */
public String getCustomerPaymentProfileID ()
{
return (String)get_Value(COLUMNNAME_CustomerPaymentProfileID);
}
/** Set Customer Profile ID.
@param CustomerProfileID Customer Profile ID */
public void setCustomerProfileID (String CustomerProfileID)
{
set_Value (COLUMNNAME_CustomerProfileID, CustomerProfileID);
}
/** Get Customer Profile ID.
@return Customer Profile ID */
public String getCustomerProfileID ()
{
return (String)get_Value(COLUMNNAME_CustomerProfileID);
}
/** Set Account Date.
@param DateAcct
Accounting Date
@ -1301,6 +1373,27 @@ public class X_C_Payment extends PO implements I_C_Payment, I_Persistent
return false;
}
/** Set Voided.
@param IsVoided Voided */
public void setIsVoided (boolean IsVoided)
{
set_Value (COLUMNNAME_IsVoided, Boolean.valueOf(IsVoided));
}
/** Get Voided.
@return Voided */
public boolean isVoided ()
{
Object oo = get_Value(COLUMNNAME_IsVoided);
if (oo != null)
{
if (oo instanceof Boolean)
return ((Boolean)oo).booleanValue();
return "Y".equals(oo);
}
return false;
}
/** Set Micr.
@param Micr
Combination of routing no, account and check no
@ -1608,59 +1701,6 @@ public class X_C_Payment extends PO implements I_C_Payment, I_Persistent
return false;
}
public org.compiere.model.I_C_Payment getRef_Payment() throws RuntimeException
{
return (org.compiere.model.I_C_Payment)MTable.get(getCtx(), org.compiere.model.I_C_Payment.Table_Name)
.getPO(getRef_Payment_ID(), get_TrxName()); }
/** Set Referenced Payment.
@param Ref_Payment_ID Referenced Payment */
public void setRef_Payment_ID (int Ref_Payment_ID)
{
if (Ref_Payment_ID < 1)
set_ValueNoCheck (COLUMNNAME_Ref_Payment_ID, null);
else
set_ValueNoCheck (COLUMNNAME_Ref_Payment_ID, Integer.valueOf(Ref_Payment_ID));
}
/** Get Referenced Payment.
@return Referenced Payment */
public int getRef_Payment_ID ()
{
Integer ii = (Integer)get_Value(COLUMNNAME_Ref_Payment_ID);
if (ii == null)
return 0;
return ii.intValue();
}
public org.compiere.model.I_C_Payment getReversal() throws RuntimeException
{
return (org.compiere.model.I_C_Payment)MTable.get(getCtx(), org.compiere.model.I_C_Payment.Table_Name)
.getPO(getReversal_ID(), get_TrxName()); }
/** Set Reversal ID.
@param Reversal_ID
ID of document reversal
*/
public void setReversal_ID (int Reversal_ID)
{
if (Reversal_ID < 1)
set_Value (COLUMNNAME_Reversal_ID, null);
else
set_Value (COLUMNNAME_Reversal_ID, Integer.valueOf(Reversal_ID));
}
/** Get Reversal ID.
@return ID of document reversal
*/
public int getReversal_ID ()
{
Integer ii = (Integer)get_Value(COLUMNNAME_Reversal_ID);
if (ii == null)
return 0;
return ii.intValue();
}
/** Set Info.
@param R_Info
Response info
@ -1678,23 +1718,6 @@ public class X_C_Payment extends PO implements I_C_Payment, I_Persistent
return (String)get_Value(COLUMNNAME_R_Info);
}
/** Set Routing No.
@param RoutingNo
Bank Routing Number
*/
public void setRoutingNo (String RoutingNo)
{
set_Value (COLUMNNAME_RoutingNo, RoutingNo);
}
/** Get Routing No.
@return Bank Routing Number
*/
public String getRoutingNo ()
{
return (String)get_Value(COLUMNNAME_RoutingNo);
}
/** Set Reference.
@param R_PnRef
Payment reference
@ -1763,6 +1786,90 @@ public class X_C_Payment extends PO implements I_C_Payment, I_Persistent
return (String)get_Value(COLUMNNAME_R_Result);
}
/** Set Void Message.
@param R_VoidMsg Void Message */
public void setR_VoidMsg (String R_VoidMsg)
{
set_Value (COLUMNNAME_R_VoidMsg, R_VoidMsg);
}
/** Get Void Message.
@return Void Message */
public String getR_VoidMsg ()
{
return (String)get_Value(COLUMNNAME_R_VoidMsg);
}
public org.compiere.model.I_C_Payment getRef_Payment() throws RuntimeException
{
return (org.compiere.model.I_C_Payment)MTable.get(getCtx(), org.compiere.model.I_C_Payment.Table_Name)
.getPO(getRef_Payment_ID(), get_TrxName()); }
/** Set Referenced Payment.
@param Ref_Payment_ID Referenced Payment */
public void setRef_Payment_ID (int Ref_Payment_ID)
{
if (Ref_Payment_ID < 1)
set_ValueNoCheck (COLUMNNAME_Ref_Payment_ID, null);
else
set_ValueNoCheck (COLUMNNAME_Ref_Payment_ID, Integer.valueOf(Ref_Payment_ID));
}
/** Get Referenced Payment.
@return Referenced Payment */
public int getRef_Payment_ID ()
{
Integer ii = (Integer)get_Value(COLUMNNAME_Ref_Payment_ID);
if (ii == null)
return 0;
return ii.intValue();
}
public org.compiere.model.I_C_Payment getReversal() throws RuntimeException
{
return (org.compiere.model.I_C_Payment)MTable.get(getCtx(), org.compiere.model.I_C_Payment.Table_Name)
.getPO(getReversal_ID(), get_TrxName()); }
/** Set Reversal ID.
@param Reversal_ID
ID of document reversal
*/
public void setReversal_ID (int Reversal_ID)
{
if (Reversal_ID < 1)
set_Value (COLUMNNAME_Reversal_ID, null);
else
set_Value (COLUMNNAME_Reversal_ID, Integer.valueOf(Reversal_ID));
}
/** Get Reversal ID.
@return ID of document reversal
*/
public int getReversal_ID ()
{
Integer ii = (Integer)get_Value(COLUMNNAME_Reversal_ID);
if (ii == null)
return 0;
return ii.intValue();
}
/** Set Routing No.
@param RoutingNo
Bank Routing Number
*/
public void setRoutingNo (String RoutingNo)
{
set_Value (COLUMNNAME_RoutingNo, RoutingNo);
}
/** Get Routing No.
@return Bank Routing Number
*/
public String getRoutingNo ()
{
return (String)get_Value(COLUMNNAME_RoutingNo);
}
/** Set Swipe.
@param Swipe
Track 1 and 2 of the Credit Card

View File

@ -16,6 +16,40 @@
*****************************************************************************/
package org.compiere.util;
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_ACCOUNT;
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_AMOUNT;
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_ASSIGNMENT;
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_BINARY;
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_BUTTON;
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_COLOR;
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_COSTPRICE;
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_DATE;
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_DATETIME;
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_FILENAME;
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_FILEPATH;
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_ID;
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_IMAGE;
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_INTEGER;
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_LIST;
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_LOCATION;
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_LOCATOR;
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_MEMO;
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_NUMBER;
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_PAYMENT;
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_PRINTNAME;
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_PRODUCTATTRIBUTE;
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_QUANTITY;
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_ROWID;
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_SEARCH;
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_STRING;
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_TABLE;
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_TABLEDIR;
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_TEXT;
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_TEXTLONG;
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_TIME;
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_URL;
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_YES_NO;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.NumberFormat;
@ -23,8 +57,6 @@ import java.text.SimpleDateFormat;
import java.util.Locale;
import java.util.logging.Level;
import static org.compiere.model.SystemIDs.*;
/**
* System Display Types.
* <pre>
@ -103,6 +135,8 @@ public final class DisplayType
/** Display Type 42 PrinterName */
public static final int PrinterName = REFERENCE_DATATYPE_PRINTNAME;
// Candidates:
/** Display Type 200012 Payment */
public static final int Payment = REFERENCE_DATATYPE_PAYMENT;
/**
* - New Display Type
@ -428,7 +462,7 @@ public final class DisplayType
*/
public static Class getClass (int displayType, boolean yesNoAsBoolean)
{
if (isText(displayType) || displayType == List)
if (isText(displayType) || displayType == List || displayType == Payment)
return String.class;
else if (isID(displayType) || displayType == Integer) // note that Integer is stored as BD
return Integer.class;
@ -488,7 +522,7 @@ public final class DisplayType
return "CLOB";
if (displayType == DisplayType.YesNo)
return "CHAR(1)";
if (displayType == DisplayType.List) {
if (displayType == DisplayType.List || displayType == DisplayType.Payment) {
if (fieldLength == 1)
return "CHAR(" + fieldLength + ")";
else
@ -585,6 +619,8 @@ public final class DisplayType
return "URL";
if (displayType == PrinterName)
return "PrinterName";
if (displayType == Payment)
return "Payment";
//
return "UNKNOWN DisplayType=" + displayType;
} // getDescription

View File

@ -141,6 +141,9 @@ public final class Ini implements Serializable
/** Role */
public static final String P_ROLE = "Role";
private static final String DEFAULT_ROLE = "";
/**Server Name */
public static final String P_SERVERNAME = "ServerName";
private static final String DEFAULT_SERVERNAME = "";
/** Client Name */
public static final String P_CLIENT = "Client";
private static final String DEFAULT_CLIENT = "";
@ -196,7 +199,7 @@ public final class Ini implements Serializable
P_ADEMPIERESYS, P_LOGMIGRATIONSCRIPT, P_SHOW_ACCT, P_SHOW_TRL,
P_SHOW_ADVANCED, P_CACHE_WINDOW,
P_CONTEXT, P_TEMP_DIR,
P_ROLE, P_CLIENT, P_ORG, P_PRINTER, P_WAREHOUSE, P_TODAY,
P_ROLE, P_SERVERNAME, P_CLIENT, P_ORG, P_PRINTER, P_WAREHOUSE, P_TODAY,
P_PRINTPREVIEW,
P_VALIDATE_CONNECTION_ON_STARTUP,
P_SINGLE_INSTANCE_PER_WINDOW,
@ -214,7 +217,7 @@ public final class Ini implements Serializable
DEFAULT_ADEMPIERESYS?"Y":"N", DEFAULT_LOGMIGRATIONSCRIPT?"Y":"N", DEFAULT_SHOW_ACCT?"Y":"N", DEFAULT_SHOW_TRL?"Y":"N",
DEFAULT_SHOW_ADVANCED?"Y":"N", DEFAULT_CACHE_WINDOW?"Y":"N",
DEFAULT_CONTEXT, DEFAULT_TEMP_DIR,
DEFAULT_ROLE, DEFAULT_CLIENT, DEFAULT_ORG, DEFAULT_PRINTER, DEFAULT_WAREHOUSE, DEFAULT_TODAY.toString(),
DEFAULT_ROLE, DEFAULT_SERVERNAME, DEFAULT_CLIENT, DEFAULT_ORG, DEFAULT_PRINTER, DEFAULT_WAREHOUSE, DEFAULT_TODAY.toString(),
DEFAULT_PRINTPREVIEW?"Y":"N",
DEFAULT_VALIDATE_CONNECTION_ON_STARTUP?"Y":"N",
DEFAULT_SINGLE_INSTANCE_PER_WINDOW?"Y":"N",

View File

@ -154,6 +154,9 @@ public class WebLogin
*/
public boolean action() throws IOException, ServletException
{
//remote Address
String remoteIP = m_request.getHeader("X-Forwarded-For");
remoteIP = remoteIP!=null ? remoteIP : m_request.getRemoteAddr();
// Mode
if (getMode() == null)
{
@ -228,7 +231,7 @@ public class WebLogin
if (m_forward==null || m_forward.equals(getLogin_RelURL ()))
m_forward = "/index.jsp";
// Create Session with User ID
MSession cSession = MSession.get (m_ctx, m_request.getRemoteAddr(),
MSession cSession = MSession.get (m_ctx, remoteIP,
m_request.getRemoteHost(), m_session.getId());
if (cSession != null)
cSession.setWebStoreSession(true);
@ -275,7 +278,7 @@ public class WebLogin
// Create / set session
if (m_wu.isLoggedIn())
{
MSession cSession = MSession.get (m_ctx, m_request.getRemoteAddr(),
MSession cSession = MSession.get (m_ctx, remoteIP,
m_request.getRemoteHost(), m_session.getId());
if (cSession != null)
cSession.setWebStoreSession(true);
@ -312,7 +315,7 @@ public class WebLogin
{
m_session.setAttribute (WebInfo.NAME, new WebInfo (m_ctx, m_wu));
// Create / set session
MSession cSession = MSession.get (m_ctx, m_request.getRemoteAddr(),
MSession cSession = MSession.get (m_ctx, remoteIP,
m_request.getRemoteHost(), m_session.getId());
if (cSession != null)
cSession.setWebStoreSession(true);
@ -380,7 +383,7 @@ public class WebLogin
return false;
}
MSession cSession = MSession.get (m_ctx, m_request.getRemoteAddr(), m_request.getRemoteHost(), m_session.getId());
MSession cSession = MSession.get (m_ctx, remoteIP, m_request.getRemoteHost(), m_session.getId());
if (cSession != null)
cSession.setWebStoreSession(true);

View File

@ -31,6 +31,7 @@ import org.compiere.grid.ed.VMemo;
import org.compiere.grid.ed.VNumber;
import org.compiere.grid.ed.VPAttribute;
import org.compiere.grid.ed.VPassword;
import org.compiere.grid.ed.VPaymentEditor;
import org.compiere.grid.ed.VString;
import org.compiere.grid.ed.VText;
import org.compiere.grid.ed.VTextLong;
@ -41,6 +42,7 @@ import org.compiere.model.MAccountLookup;
import org.compiere.model.MLocationLookup;
import org.compiere.model.MLocatorLookup;
import org.compiere.model.MPAttributeLookup;
import org.compiere.model.MPaymentLookup;
import org.compiere.util.DisplayType;
/**
@ -286,6 +288,12 @@ public class DefaultEditorFactory implements IEditorFactory {
editor = bin;
}
else if (displayType == DisplayType.Payment)
{
VPaymentEditor p = new VPaymentEditor (mField, columnName, mandatory, readOnly, updateable, (MPaymentLookup) mField.getLookup());
editor = p;
}
return editor;
}

View File

@ -0,0 +1,231 @@
package org.compiere.grid;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Enumeration;
import org.compiere.apps.ADialog;
import org.compiere.grid.ed.VDate;
import org.compiere.grid.ed.VNumber;
import org.compiere.model.GridTab;
import org.compiere.model.MConversionRate;
import org.compiere.model.MInvoice;
import org.compiere.swing.CComboBox;
import org.compiere.swing.CLabel;
import org.compiere.util.DisplayType;
import org.compiere.util.Env;
import org.compiere.util.KeyNamePair;
import org.compiere.util.Msg;
public class VPaymentFormCash extends PaymentFormCash implements ActionListener {
private VPaymentFormDialog dialog;
private CLabel bBankAccountLabel = new CLabel();
private CComboBox bBankAccountCombo = new CComboBox();
private CLabel bCashBookLabel = new CLabel();
private CComboBox bCashBookCombo = new CComboBox();
private CLabel bCurrencyLabel = new CLabel();
private CComboBox bCurrencyCombo = new CComboBox();
private VDate bDateField;
private CLabel bDateLabel = new CLabel();
private CLabel bAmountLabel = new CLabel();
private VNumber bAmountField = new VNumber();
public VPaymentFormCash(int windowNo, GridTab mTab) {
super(windowNo, mTab);
bDateField = new VDate("DateAcct", false, false, true, DisplayType.Date, "DateAcct");
dialog = new VPaymentFormDialog(this, windowNo);
init();
//Bojana&Daniel
//If Invoice is Vendor invoice then Cash has to be created by negative amount
int C_Invoice_ID = Env.getContextAsInt(Env.getCtx(), windowNo, "C_Invoice_ID");
MInvoice invoice_tmp = new MInvoice (Env.getCtx(), C_Invoice_ID, null);
if (! invoice_tmp.isSOTrx())
{
bAmountField.setValue(m_Amount.negate());
}else {
bAmountField.setValue(m_Amount);
}
invoice_tmp = null;
}
public void init() {
GridBagLayout bPanelLayout = new GridBagLayout();
bBankAccountLabel.setText(Msg.translate(Env.getCtx(), "C_BankAccount_ID"));
bCurrencyLabel.setText(Msg.translate(Env.getCtx(), "C_Currency_ID"));
dialog.getPanel().setLayout(bPanelLayout);
bAmountLabel.setText(Msg.getMsg(Env.getCtx(), "Amount"));
//bAmountField.setText("");
bDateLabel.setText(Msg.translate(Env.getCtx(), "DateAcct"));
if (m_Cash_As_Payment){
dialog.getPanel().add(bBankAccountLabel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(2, 0, 2, 0), 0, 0));
dialog.getPanel().add(bBankAccountCombo, new GridBagConstraints(1, 0, 2, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(2, 5, 2, 5), 0, 0));
} else {
bCashBookLabel.setText(Msg.translate(Env.getCtx(), "C_CashBook_ID"));
dialog.getPanel().add(bCashBookLabel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(2, 0, 2, 0), 0, 0));
dialog.getPanel().add(bCashBookCombo, new GridBagConstraints(1, 0, 2, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(2, 5, 2, 5), 0, 0));
}
dialog.getPanel().add(bCurrencyLabel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(2, 0, 2, 0), 0, 0));
dialog.getPanel().add(bCurrencyCombo, new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(2, 5, 2, 5), 0, 0));
dialog.getPanel().add(bDateLabel, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 0, 2, 0), 0, 0));
dialog.getPanel().add(bDateField, new GridBagConstraints(1, 2, 2, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 2, 5), 0, 0));
dialog.getPanel().add(bAmountLabel, new GridBagConstraints(0, 3, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 0, 2, 0), 0, 0));
dialog.getPanel().add(bAmountField, new GridBagConstraints(1, 3, 1, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 2, 5), 0, 0));
}
@Override
public void loadData() {
bAmountField.setValue(m_Amount);
if (m_C_Payment_ID != 0)
bAmountField.setValue(m_mPayment.getPayAmt());
// Existing Cashbook entry
if (m_C_CashLine_ID != 0)
bAmountField.setValue(m_cashLine.getAmount());
// Accounting Date
bDateField.setValue(m_DateAcct);
// Is the currency an EMU currency?
Integer C_Currency_ID = new Integer(m_C_Currency_ID);
if (s_Currencies.containsKey(C_Currency_ID)) {
Enumeration<Integer> en = s_Currencies.keys();
while (en.hasMoreElements()) {
Object key = en.nextElement();
bCurrencyCombo.addItem(s_Currencies.get(key));
}
bCurrencyCombo.addActionListener(this);
bCurrencyCombo.setSelectedItem(s_Currencies.get(C_Currency_ID));
}
else // No EMU Currency
{
bCurrencyLabel.setVisible(false); // Cash
bCurrencyCombo.setVisible(false);
}
ArrayList<KeyNamePair> list = getBankAccountList();
for (KeyNamePair pp : list)
bBankAccountCombo.addItem(pp);
// Set Selection
if (selectedBankAccount != null)
bBankAccountCombo.setSelectedItem(selectedBankAccount);
list = getCashBookList();
for (KeyNamePair pp : list)
bCashBookCombo.addItem(pp);
// Set Selection
if (selectedCashBook != null)
bCashBookCombo.setSelectedItem(selectedCashBook);
}
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == bCurrencyCombo)
{
KeyNamePair pp = (KeyNamePair)bCurrencyCombo.getSelectedItem();
BigDecimal amt = MConversionRate.convert(Env.getCtx(),
m_Amount, m_C_Currency_ID, pp.getKey(), m_AD_Client_ID, m_AD_Org_ID);
bAmountField.setValue(amt);
}
}
@Override
public boolean checkMandatory() {
int C_BankAccount_ID = 0;
/***********************
* Mandatory Data Check
*/
boolean dataOK = true;
if (m_Cash_As_Payment)
{
KeyNamePair kp = (KeyNamePair)bBankAccountCombo.getSelectedItem();
if (kp != null)
C_BankAccount_ID = kp.getKey();
}
// find Bank Account if not qualified yet
if (m_Cash_As_Payment && C_BankAccount_ID == 0)
{
// Check & Cash (Payment) must have a bank account
if (C_BankAccount_ID == 0 && m_Cash_As_Payment)
{
ADialog.error(getWindowNo(), dialog, "FillMandatory", bBankAccountLabel.getText());
dataOK = false;
}
}
return dataOK;
}
@Override
public boolean saveChangesInTrx(String trxName) {
int newC_CashBook_ID = m_C_CashBook_ID;
int newC_BankAccount_ID = 0;
if (m_Cash_As_Payment){
// get bank account
KeyNamePair kp = (KeyNamePair)bBankAccountCombo.getSelectedItem();
if (kp != null)
newC_BankAccount_ID = kp.getKey();
} else {
// get cash book
KeyNamePair kp = (KeyNamePair)bCashBookCombo.getSelectedItem();
if (kp != null)
newC_CashBook_ID = kp.getKey();
}
Timestamp newDateAcct = (Timestamp)bDateField.getValue();
boolean ok = save(newC_BankAccount_ID,newC_CashBook_ID, newDateAcct, (BigDecimal) bAmountField.getValue(), trxName);
if (!ok)
ADialog.error(getWindowNo(), dialog, "PaymentError", processMsg);
else if (processMsg != null)
ADialog.info(getWindowNo(), dialog, "PaymentCreated", processMsg);
return true;
}
@Override
public void showWindow()
{
dialog.setVisible(true);
}
@Override
public void closeWindow()
{
dialog.dispose();
}
@Override
public Object getWindow() {
return dialog;
}
}

View File

@ -0,0 +1,225 @@
package org.compiere.grid;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Enumeration;
import org.adempiere.plaf.AdempierePLAF;
import org.compiere.apps.ADialog;
import org.compiere.grid.ed.VNumber;
import org.compiere.model.GridTab;
import org.compiere.model.MConversionRate;
import org.compiere.model.MPaymentValidate;
import org.compiere.swing.CButton;
import org.compiere.swing.CComboBox;
import org.compiere.swing.CLabel;
import org.compiere.swing.CTextField;
import org.compiere.util.Env;
import org.compiere.util.KeyNamePair;
import org.compiere.util.Msg;
public class VPaymentFormCheck extends PaymentFormCheck implements ActionListener {
private VPaymentFormDialog dialog;
private CLabel sBankAccountLabel = new CLabel();
private CComboBox sBankAccountCombo = new CComboBox();
private CLabel sCurrencyLabel = new CLabel();
private CComboBox sCurrencyCombo = new CComboBox();
private CLabel sAmountLabel = new CLabel();
private VNumber sAmountField = new VNumber();
private CLabel sRoutingLabel = new CLabel();
private CTextField sRoutingField = new CTextField();
private CLabel sNumberLabel = new CLabel();
private CTextField sNumberField = new CTextField();
private CLabel sCheckLabel = new CLabel();
private CTextField sCheckField = new CTextField();
private CButton sOnline = new CButton();
private CLabel sStatus = new CLabel();
public VPaymentFormCheck(int windowNo, GridTab mTab) {
super(windowNo, mTab);
dialog = new VPaymentFormDialog(this, windowNo);
init();
}
public void init() {
GridBagLayout sPanelLayout = new GridBagLayout();
dialog.getPanel().setLayout(sPanelLayout);
sBankAccountLabel.setText(Msg.translate(Env.getCtx(), "C_BankAccount_ID"));
sAmountLabel.setText(Msg.getMsg(Env.getCtx(), "Amount"));
//sAmountField.setText("");
sRoutingLabel.setText(Msg.translate(Env.getCtx(), "RoutingNo"));
sNumberLabel.setText(Msg.translate(Env.getCtx(), "AccountNo"));
sCheckLabel.setText(Msg.translate(Env.getCtx(), "CheckNo"));
sCheckField.setColumns(8);
sCurrencyLabel.setText(Msg.translate(Env.getCtx(), "C_Currency_ID"));
sNumberField.setPreferredSize(new Dimension(100, 21));
sRoutingField.setPreferredSize(new Dimension(70, 21));
sStatus.setText(" ");
sOnline.setText(Msg.getMsg(Env.getCtx(), "Online"));
dialog.getPanel().add(sBankAccountLabel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 0, 2, 0), 0, 0));
dialog.getPanel().add(sBankAccountCombo, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 2, 5), 0, 0));
dialog.getPanel().add(sCurrencyLabel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(2, 0, 2, 0), 0, 0));
dialog.getPanel().add(sCurrencyCombo, new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(2, 5, 2, 5), 0, 0));
dialog.getPanel().add(sAmountLabel, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(2, 0, 5, 0), 0, 0));
dialog.getPanel().add(sAmountField, new GridBagConstraints(1, 2, 1, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(2, 5, 5, 5), 0, 0));
dialog.getPanel().add(sRoutingLabel, new GridBagConstraints(0, 3, 1, 2, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(0, 0, 2, 0), 0, 0));
dialog.getPanel().add(sRoutingField, new GridBagConstraints(1, 3, 2, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 5, 2, 0), 0, 0));
dialog.getPanel().add(sNumberLabel, new GridBagConstraints(0, 5, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(2, 0, 2, 0), 0, 0));
dialog.getPanel().add(sNumberField, new GridBagConstraints(1, 5, 2, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 5, 2, 0), 0, 0));
dialog.getPanel().add(sCheckLabel, new GridBagConstraints(0, 6, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(2, 0, 2, 0), 0, 0));
dialog.getPanel().add(sCheckField, new GridBagConstraints(1, 6, 1, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(2, 5, 2, 0), 0, 0));
dialog.getPanel().add(sOnline, new GridBagConstraints(3, 6, 1, 1, 0.0, 0.0
,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
dialog.getPanel().add(sStatus, new GridBagConstraints(0, 7, 3, 1, 0.0, 0.0
,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
}
@Override
public void loadData() {
sAmountField.setValue(m_Amount);
if (m_C_Payment_ID != 0)
{
sRoutingField.setText(m_mPayment.getRoutingNo());
sNumberField.setText(m_mPayment.getAccountNo());
sCheckField.setText(m_mPayment.getCheckNo());
sStatus.setText(m_mPayment.getR_PnRef());
sAmountField.setValue(m_mPayment.getPayAmt());
}
// Is the currency an EMU currency?
Integer C_Currency_ID = new Integer(m_C_Currency_ID);
if (s_Currencies.containsKey(C_Currency_ID))
{
Enumeration<Integer> en = s_Currencies.keys();
while (en.hasMoreElements())
{
Object key = en.nextElement();
sCurrencyCombo.addItem(s_Currencies.get(key));
}
sCurrencyCombo.addActionListener(this);
sCurrencyCombo.setSelectedItem(s_Currencies.get(C_Currency_ID));
}
else // No EMU Currency
{
sCurrencyLabel.setVisible(false); // Check
sCurrencyCombo.setVisible(false);
}
ArrayList<KeyNamePair> list = getBankAccountList();
for (KeyNamePair pp : list)
sBankAccountCombo.addItem(pp);
// Set Selection
if (selectedBankAccount != null)
sBankAccountCombo.setSelectedItem(selectedBankAccount);
}
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == sCurrencyCombo)
{
KeyNamePair pp = (KeyNamePair)sCurrencyCombo.getSelectedItem();
BigDecimal amt = MConversionRate.convert(Env.getCtx(),
m_Amount, m_C_Currency_ID, pp.getKey(), m_AD_Client_ID, m_AD_Org_ID);
sAmountField.setValue(amt);
}
// else if (e.getSource() == sOnline)
// processOnline();
}
@Override
public boolean checkMandatory() {
int C_BankAccount_ID = 0;
/***********************
* Mandatory Data Check
*/
boolean dataOK = true;
KeyNamePair kp = (KeyNamePair)sBankAccountCombo.getSelectedItem();
if (kp != null)
C_BankAccount_ID = kp.getKey();
String error = MPaymentValidate.validateRoutingNo(sRoutingField.getText());
if (error.length() != 0)
{
sRoutingField.setBackground(AdempierePLAF.getFieldBackground_Error());
ADialog.error(getWindowNo(), dialog, error);
dataOK = false;
}
error = MPaymentValidate.validateAccountNo(sNumberField.getText());
if (error.length() != 0)
{
sNumberField.setBackground(AdempierePLAF.getFieldBackground_Error());
ADialog.error(getWindowNo(), dialog, error);
dataOK = false;
}
error = MPaymentValidate.validateCheckNo(sCheckField.getText());
if (error.length() != 0)
{
sCheckField.setBackground(AdempierePLAF.getFieldBackground_Error());
ADialog.error(getWindowNo(), dialog, error);
dataOK = false;
}
// Check & Cash (Payment) must have a bank account
if (C_BankAccount_ID == 0)
{
ADialog.error(getWindowNo(), dialog, "FillMandatory", sBankAccountLabel.getText());
dataOK = false;
}
return dataOK;
}
@Override
public boolean saveChangesInTrx(String trxName) {
int newC_BankAccount_ID = 0;
KeyNamePair kp = (KeyNamePair)sBankAccountCombo.getSelectedItem();
if (kp != null)
newC_BankAccount_ID = kp.getKey();
boolean ok = save(newC_BankAccount_ID, sRoutingField.getText(), sNumberField.getText(), sCheckField.getText(), (BigDecimal) sAmountField.getValue());
if (!ok)
ADialog.error(getWindowNo(), dialog, "PaymentError", processMsg);
else if (processMsg != null)
ADialog.info(getWindowNo(), dialog, "PaymentCreated", m_mPayment.getDocumentNo());
return true;
}
@Override
public void showWindow()
{
dialog.setVisible(true);
}
@Override
public void closeWindow()
{
dialog.dispose();
}
@Override
public Object getWindow() {
return dialog;
}
}

View File

@ -0,0 +1,188 @@
package org.compiere.grid;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.math.BigDecimal;
import org.compiere.apps.ADialog;
import org.compiere.grid.ed.VNumber;
import org.compiere.model.GridTab;
import org.compiere.swing.CButton;
import org.compiere.swing.CComboBox;
import org.compiere.swing.CLabel;
import org.compiere.swing.CTextField;
import org.compiere.util.Env;
import org.compiere.util.Msg;
import org.compiere.util.ValueNamePair;
public class VPaymentFormCreditCard extends PaymentFormCreditCard implements ActionListener {
private VPaymentFormDialog dialog;
private CLabel kTypeLabel = new CLabel();
private CComboBox kTypeCombo = new CComboBox();
private CLabel kNumberLabel = new CLabel();
private CTextField kNumberField = new CTextField();
private CLabel kNameLabel = new CLabel();
private CTextField kNameField = new CTextField();
private CLabel kExpLabel = new CLabel();
private CTextField kExpField = new CTextField();
private CLabel kAmountLabel = new CLabel();
private VNumber kAmountField = new VNumber();
private CLabel kApprovalLabel = new CLabel();
private CTextField kApprovalField = new CTextField();
private CButton kOnline = new CButton();
private CLabel kStatus = new CLabel();
public VPaymentFormCreditCard(int windowNo, GridTab mTab) {
super(windowNo, mTab);
dialog = new VPaymentFormDialog(this, windowNo);
init();
}
public void init() {
GridBagLayout kLayout = new GridBagLayout();
dialog.getPanel().setLayout(kLayout);
kNumberField.setPreferredSize(new Dimension(160, 21));
kNameField.setPreferredSize(new Dimension(160, 21));
kExpField.setPreferredSize(new Dimension(40, 21));
kApprovalField.setPreferredSize(new Dimension(120, 21));
kTypeLabel.setText(Msg.translate(Env.getCtx(), "CreditCardType"));
kNumberLabel.setText(Msg.translate(Env.getCtx(), "CreditCardNumber"));
kNameLabel.setText(Msg.translate(Env.getCtx(),"Name"));
kExpLabel.setText(Msg.getMsg(Env.getCtx(), "Expires"));
kApprovalLabel.setText(Msg.translate(Env.getCtx(), "VoiceAuthCode"));
kAmountLabel.setText(Msg.getMsg(Env.getCtx(), "Amount"));
kOnline.setText(Msg.getMsg(Env.getCtx(), "Online"));
kOnline.addActionListener(this);
kStatus.setText(" ");
dialog.getPanel().add(kTypeLabel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(2, 0, 2, 0), 0, 0));
dialog.getPanel().add(kTypeCombo, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(2, 5, 2, 5), 0, 0));
dialog.getPanel().add(kNumberLabel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(2, 0, 2, 0), 0, 0));
dialog.getPanel().add(kNumberField, new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.VERTICAL, new Insets(2, 5, 2, 5), 0, 0));
dialog.getPanel().add(kNameLabel, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(2, 0, 2, 0), 0, 0));
dialog.getPanel().add(kNameField, new GridBagConstraints(1, 2, 1, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.VERTICAL, new Insets(2, 5, 2, 5), 0, 0));
dialog.getPanel().add(kExpLabel, new GridBagConstraints(0, 3, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(2, 0, 2, 0), 0, 0));
dialog.getPanel().add(kExpField, new GridBagConstraints(1, 3, 1, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(2, 5, 2, 5), 0, 0));
dialog.getPanel().add(kAmountLabel, new GridBagConstraints(0, 4, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(2, 0, 5, 0), 0, 0));
dialog.getPanel().add(kAmountField, new GridBagConstraints(1, 4, 1, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(2, 5, 5, 5), 0, 0));
dialog.getPanel().add(kApprovalLabel, new GridBagConstraints(0, 5, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 5, 5, 0), 0, 0));
dialog.getPanel().add(kApprovalField, new GridBagConstraints(1, 5, 1, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
dialog.getPanel().add(kStatus, new GridBagConstraints(0, 6, 2, 1, 0.0, 0.0
,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
dialog.getPanel().add(kOnline, new GridBagConstraints(2, 5, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
}
@Override
public void loadData() {
kAmountField.setValue(m_Amount);
if (m_C_Payment_ID != 0)
{
kNumberField.setText(m_mPayment.getCreditCardNumber());
kNameField.setText(m_mPayment.getA_Name());
kExpField.setText(m_mPayment.getCreditCardExp(null));
kApprovalField.setText(m_mPayment.getVoiceAuthCode());
kStatus.setText(m_mPayment.getR_PnRef());
kAmountField.setValue(m_mPayment.getPayAmt());
// if approved/paid, don't let it change
kTypeCombo.setReadWrite(!m_mPayment.isApproved());
kNumberField.setReadWrite(!m_mPayment.isApproved());
kNameField.setReadWrite(!m_mPayment.isApproved());
kExpField.setReadWrite(!m_mPayment.isApproved());
kApprovalField.setReadWrite(!m_mPayment.isApproved());
kOnline.setReadWrite(!m_mPayment.isApproved());
kAmountField.setReadWrite(!m_mPayment.isApproved());
}
/**
* Load Credit Cards
*/
ValueNamePair[] ccs = getCreditCardList();
for (int i = 0; i < ccs.length; i++)
kTypeCombo.addItem(ccs[i]);
// Set Selection
if (selectedCreditCard != null)
kTypeCombo.setSelectedItem(selectedCreditCard);
}
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == kOnline)
processOnline();
}
@Override
public boolean checkMandatory() {
return true;
}
@Override
public boolean saveChangesInTrx(String trxName) {
String newCCType = m_CCType;
ValueNamePair vp = (ValueNamePair)kTypeCombo.getSelectedItem();
if (vp != null)
newCCType = vp.getValue();
boolean ok = save(newCCType, kNumberField.getText(), kExpField.getText(), (BigDecimal) kAmountField.getValue());
if(!ok)
ADialog.error(getWindowNo(), dialog, "PaymentError", processMsg);
else if (processMsg != null)
ADialog.info(getWindowNo(), dialog, "PaymentCreated", processMsg);
return true;
}
/**************************************************************************
* Process Online (sales only) - if approved - exit
*/
public void processOnline()
{
ValueNamePair vp = (ValueNamePair)kTypeCombo.getSelectedItem();
String CCType = vp.getValue();
boolean ok = processOnline(CCType, kNumberField.getText(), kExpField.getText());
if (!ok)
ADialog.error(getWindowNo(), dialog, "PaymentError", processMsg);
else if (processMsg != null)
ADialog.info(getWindowNo(), dialog, "PaymentProcessed", processMsg);
} // online
@Override
public void showWindow()
{
dialog.setVisible(true);
}
@Override
public void closeWindow()
{
dialog.dispose();
}
@Override
public Object getWindow() {
return dialog;
}
}

View File

@ -0,0 +1,93 @@
package org.compiere.grid;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import org.compiere.apps.ADialog;
import org.compiere.apps.AEnv;
import org.compiere.apps.ConfirmPanel;
import org.compiere.swing.CDialog;
import org.compiere.swing.CPanel;
import org.compiere.util.Env;
import org.compiere.util.Msg;
public class VPaymentFormDialog extends CDialog implements ActionListener
{
private PaymentForm paymentForm;
private int windowNo;
private CPanel mainPanel = new CPanel();
private BorderLayout mainLayout = new BorderLayout();
private CPanel centerPanel = new CPanel();
private ConfirmPanel confirmPanel = new ConfirmPanel(true);
private boolean initOK = false;
public VPaymentFormDialog(PaymentForm paymentForm, int windowNo)
{
super(AEnv.getWindow(windowNo), Msg.getMsg(Env.getCtx(), "Payment"), true);
this.paymentForm = paymentForm;
this.windowNo = windowNo;
try {
jbInit();
initOK = dynInit(); // Null Pointer if order/invoice not saved yet
} catch (Exception ex) {
ADialog.error(windowNo, this, ex.getMessage());
initOK = false;
}
setPreferredSize(new Dimension(500, 400));
pack();
}
private void jbInit() throws Exception
{
getContentPane().add(mainPanel);
mainPanel.setLayout(mainLayout);
centerPanel.setBorder(BorderFactory.createRaisedBevelBorder());
mainPanel.add(centerPanel, BorderLayout.CENTER);
mainPanel.add(confirmPanel, BorderLayout.SOUTH);
confirmPanel.addActionListener(this);
}
private boolean dynInit() throws Exception
{
boolean isInitOK = paymentForm.dynInit();
centerPanel.setVisible(!paymentForm.isOnlyRule());
return isInitOK;
}
public CPanel getPanel() {
return centerPanel;
}
/**************************************************************************
* Action Listener
* @param e event
*/
public void actionPerformed(ActionEvent e)
{
// Finish
if (e.getActionCommand().equals(ConfirmPanel.A_OK))
{
if (paymentForm.checkMandatory())
{
paymentForm.saveChanges(); // cannot recover
dispose ();
}
}
else if (e.getActionCommand().equals(ConfirmPanel.A_CANCEL))
dispose();
}
public boolean isInitOK()
{
return initOK;
}
}

View File

@ -0,0 +1,11 @@
package org.compiere.grid;
import org.compiere.model.GridTab;
public class VPaymentFormDirectDebit extends VPaymentFormDirectDeposit {
public VPaymentFormDirectDebit(int WindowNo, GridTab mTab) {
super(WindowNo, mTab);
}
}

View File

@ -0,0 +1,125 @@
package org.compiere.grid;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.util.ArrayList;
import org.adempiere.plaf.AdempierePLAF;
import org.compiere.apps.ADialog;
import org.compiere.model.GridTab;
import org.compiere.swing.CButton;
import org.compiere.swing.CComboBox;
import org.compiere.swing.CLabel;
import org.compiere.swing.CTextField;
import org.compiere.util.Env;
import org.compiere.util.KeyNamePair;
import org.compiere.util.Msg;
public class VPaymentFormDirectDeposit extends PaymentFormDirectDeposit {
private VPaymentFormDialog dialog;
private CLabel tAccountLabel = new CLabel();
private CComboBox tAccountCombo = new CComboBox();
private CButton tOnline = new CButton();
private CTextField tRoutingField = new CTextField();
private CTextField tNumberField = new CTextField();
private CLabel tStatus = new CLabel();
private CLabel tRoutingText = new CLabel();
private CLabel tNumberText = new CLabel();
public VPaymentFormDirectDeposit(int windowNo, GridTab mTab) {
super(windowNo, mTab);
dialog = new VPaymentFormDialog(this, windowNo);
init();
}
public void init() {
GridBagLayout tPanelLayout = new GridBagLayout();
dialog.getPanel().setLayout(tPanelLayout);
tAccountLabel.setText(Msg.translate(Env.getCtx(), "C_BP_BankAccount_ID"));
tRoutingField.setColumns(8);
tNumberField.setColumns(10);
tRoutingText.setText(Msg.translate(Env.getCtx(), "RoutingNo"));
tNumberText.setText(Msg.translate(Env.getCtx(), "AccountNo"));
tOnline.setText(Msg.getMsg(Env.getCtx(), "Online"));
tStatus.setText(" ");
dialog.getPanel().add(tAccountLabel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 5, 5, 0), 0, 0));
dialog.getPanel().add(tAccountCombo, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
dialog.getPanel().add(tRoutingField, new GridBagConstraints(1, 1, 2, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 0, 5), 0, 0));
dialog.getPanel().add(tNumberField, new GridBagConstraints(1, 2, 1, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 0, 5), 0, 0));
dialog.getPanel().add(tStatus, new GridBagConstraints(0, 3, 2, 1, 0.0, 0.0
,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
dialog.getPanel().add(tRoutingText, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 5, 0, 0), 0, 0));
dialog.getPanel().add(tNumberText, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 5, 0, 0), 0, 0));
dialog.getPanel().add(tOnline, new GridBagConstraints(3, 2, 1, 1, 0.0, 0.0
,GridBagConstraints.NORTHEAST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
}
@Override
public void loadData() {
if (m_C_Payment_ID != 0)
{
tRoutingField.setText(m_mPayment.getRoutingNo());
tNumberField.setText(m_mPayment.getAccountNo());
tStatus.setText(m_mPayment.getR_PnRef());
}
ArrayList<KeyNamePair> list = getBankAccountList();
for (KeyNamePair pp : list)
tAccountCombo.addItem(pp);
}
@Override
public boolean checkMandatory() {
/***********************
* Mandatory Data Check
*/
boolean dataOK = true;
KeyNamePair bpba = (KeyNamePair)tAccountCombo.getSelectedItem();
if (bpba == null)
{
tAccountCombo.setBackground(AdempierePLAF.getFieldBackground_Error());
ADialog.error(getWindowNo(), dialog, "PaymentBPBankNotFound");
dataOK = false;
}
//
log.config("OK=" + dataOK);
return dataOK;
}
@Override
public boolean saveChangesInTrx(String trxName) {
boolean ok = save();
if (!ok)
ADialog.error(getWindowNo(), dialog, "PaymentError", processMsg);
else if (processMsg != null)
ADialog.info(getWindowNo(), dialog, "PaymentCreated", m_mPayment.getDocumentNo());
return true;
}
@Override
public void showWindow()
{
dialog.setVisible(true);
}
@Override
public void closeWindow()
{
dialog.dispose();
}
@Override
public Object getWindow() {
return dialog;
}
}

View File

@ -0,0 +1,63 @@
package org.compiere.grid;
import java.util.HashMap;
import java.util.logging.Level;
import org.compiere.model.GridTab;
import org.compiere.util.CLogger;
public class VPaymentFormFactory {
/** Static Logger */
private static CLogger s_log = CLogger.getCLogger (VPaymentFormFactory.class);
private static HashMap<String, Class<? extends IPaymentForm>> s_registeredClasses = null;
/**
* Register custom VPaymentForm* class
* @param ad_table_id
* @param cl custom class
*/
public static final void registerClass(String paymentRule, Class<? extends IPaymentForm> cl)
{
s_registeredClasses.put(paymentRule, cl);
s_log.info("Registered PaymentRule="+paymentRule+", Class="+cl);
}
static
{
// Register defaults:
s_registeredClasses = new HashMap<String, Class<? extends IPaymentForm>>();
s_registeredClasses.put(PaymentFormCash.PAYMENTRULE, VPaymentFormCash.class);
s_registeredClasses.put(PaymentFormCheck.PAYMENTRULE, VPaymentFormCheck.class);
s_registeredClasses.put(PaymentFormCreditCard.PAYMENTRULE, VPaymentFormCreditCard.class);
s_registeredClasses.put(PaymentFormDirectDebit.PAYMENTRULE, VPaymentFormDirectDebit.class);
s_registeredClasses.put(PaymentFormDirectDeposit.PAYMENTRULE, VPaymentFormDirectDeposit.class);
s_registeredClasses.put(PaymentFormMixedPOS.PAYMENTRULE, VPaymentFormMixedPOS.class);
s_registeredClasses.put(PaymentFormOnCredit.PAYMENTRULE, VPaymentFormOnCredit.class);
}
public static IPaymentForm create (int windowNo, GridTab mTab, String paymentRule)
{
IPaymentForm retValue = null;
Class<? extends IPaymentForm> cl = s_registeredClasses.get(paymentRule);
if (cl != null)
{
try
{
java.lang.reflect.Constructor<? extends IPaymentForm> ctor = cl.getConstructor(int.class, GridTab.class);
retValue = ctor.newInstance(windowNo, mTab);
}
catch (Throwable e)
{
s_log.log(Level.SEVERE, e.getLocalizedMessage(), e);
return null;
}
}
if (retValue == null)
{
s_log.info("Unsupported PaymentRule=" + paymentRule);
return null;
}
return retValue;
} // create
}

View File

@ -0,0 +1,43 @@
package org.compiere.grid;
import org.compiere.model.GridTab;
public class VPaymentFormMixedPOS extends PaymentFormMixedPOS {
private VPaymentFormDialog dialog;
public VPaymentFormMixedPOS(int windowNo, GridTab mTab) {
super(windowNo, mTab);
dialog = new VPaymentFormDialog(this, windowNo);
}
@Override
public void loadData() {
}
@Override
public boolean checkMandatory() {
return true;
}
@Override
public boolean saveChangesInTrx(String trxName) {
return true;
}
@Override
public void showWindow()
{
dialog.setVisible(true);
}
@Override
public void closeWindow()
{
dialog.dispose();
}
@Override
public Object getWindow() {
return dialog;
}
}

View File

@ -0,0 +1,80 @@
package org.compiere.grid;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.util.ArrayList;
import org.compiere.model.GridTab;
import org.compiere.swing.CComboBox;
import org.compiere.swing.CLabel;
import org.compiere.util.Env;
import org.compiere.util.KeyNamePair;
import org.compiere.util.Msg;
public class VPaymentFormOnCredit extends PaymentFormOnCredit {
private VPaymentFormDialog dialog;
private CLabel pTermLabel = new CLabel();
private CComboBox pTermCombo = new CComboBox();
public VPaymentFormOnCredit(int windowNo, GridTab mTab) {
super(windowNo, mTab);
dialog = new VPaymentFormDialog(this, windowNo);
init();
}
public void init() {
GridBagLayout pPanelLayout = new GridBagLayout();
dialog.getPanel().setLayout(pPanelLayout);
pTermLabel.setText(Msg.translate(Env.getCtx(), "C_PaymentTerm_ID"));
dialog.getPanel().add(pTermLabel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(2, 5, 2, 0), 0, 0));
dialog.getPanel().add(pTermCombo, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(2, 5, 2, 5), 0, 0));
}
@Override
public void loadData() {
ArrayList<KeyNamePair> list = getPaymentTermList();
for (KeyNamePair pp : list)
pTermCombo.addItem(pp);
// Set Selection
if (selectedPaymentTerm != null)
pTermCombo.setSelectedItem(selectedPaymentTerm);
}
@Override
public boolean checkMandatory() {
return true;
}
@Override
public boolean saveChangesInTrx(String trxName) {
int newC_PaymentTerm_ID = 0;
KeyNamePair kp = (KeyNamePair)pTermCombo.getSelectedItem();
if (kp != null)
newC_PaymentTerm_ID = kp.getKey();
return save(newC_PaymentTerm_ID);
}
@Override
public void showWindow()
{
dialog.setVisible(true);
}
@Override
public void closeWindow()
{
dialog.dispose();
}
@Override
public Object getWindow() {
return dialog;
}
}

View File

@ -0,0 +1,534 @@
package org.compiere.grid.ed;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyVetoException;
import java.util.logging.Level;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComponent;
import org.compiere.grid.IPaymentForm;
import org.compiere.grid.VPaymentFormDialog;
import org.compiere.grid.VPaymentFormFactory;
import org.compiere.model.GridField;
import org.compiere.model.GridTab;
import org.compiere.model.MLookup;
import org.compiere.model.MPaymentLookup;
import org.compiere.swing.CButton;
import org.compiere.util.CLogger;
import org.compiere.util.DisplayType;
import org.compiere.util.Env;
import org.compiere.util.NamePair;
public class VPaymentEditor extends JComponent implements VEditor, ActionListener, FocusListener {
/** Logger */
private static CLogger log = CLogger.getCLogger(VPaymentEditor.class);
/** Search: The Button to open Editor */
private CButton m_button = new CButton();
/** The Combo Box if not a Search Lookup */
private VComboBox m_combo = new VComboBox();
/** Column Name */
private String m_columnName;
/** Lookup */
private MPaymentLookup m_lookup;
/** The Value */
private Object m_value;
/** Indicator that value is being set */
private volatile boolean m_settingValue = false;
/** Indicator that docus is being set */
private volatile boolean m_settingFocus = false;
/** Indicator that Lookup has focus */
private volatile boolean m_haveFocus = false;
/** Indicator - inserting new value */
private volatile boolean m_inserting = false;
/** Last Display */
private String m_lastDisplay = "";
private boolean m_stopediting = false;
private GridField m_mField;
public VPaymentEditor(GridField gridField, String columnName, boolean mandatory, boolean isReadOnly, boolean isUpdateable, MPaymentLookup lookup) {
super();
m_mField = gridField;
super.setName(columnName);
m_combo.setName(columnName);
m_columnName = columnName;
setMandatory(mandatory);
m_lookup = lookup;
if (m_lookup != null)
m_lookup.setMandatory(mandatory);
//
setLayout(new BorderLayout());
// Button
m_button.addActionListener(this);
m_button.setFocusable(false); // don't focus when tabbing
m_button.setMargin(new Insets(0, 0, 0, 0));
m_button.setIcon(Env.getImageIcon("Payment10.gif"));
// *** VComboBox ***
if (m_lookup != null)
{
// Don't have to fill up combobox if it is readonly
if (!isReadOnly && isUpdateable)
m_lookup.fillComboBox (isMandatory(), true, true, false);
m_combo.setModel(m_lookup);
//
// AutoCompletion.enable(m_combo);
m_combo.addActionListener(this); // Selection
// FocusListener to refresh selection before opening
m_combo.addFocusListener(this);
}
setUI (true);
// ReadWrite - decides what components to show
if (isReadOnly || !isUpdateable || m_lookup == null)
setReadWrite(false);
else
setReadWrite(true);
}
@Override
public void dispose() {
m_button = null;
m_lookup = null;
m_mField = null;
//
m_combo.getEditor().getEditorComponent().removeFocusListener(this);
m_combo.removeFocusListener(this);
m_combo.removeActionListener(this);
m_combo.setModel(new DefaultComboBoxModel()); // remove reference
// m_combo.removeAllItems();
m_combo = null;
}
private void setUI (boolean initial)
{
if (initial)
{
Dimension size = m_combo.getPreferredSize();
setPreferredSize(new Dimension(size)); // causes r/o to be the same length
setMinimumSize(new Dimension (30, size.height));
//
Dimension bSize = new Dimension(size.height, size.height);
m_button.setPreferredSize (bSize);
}
// What to show
this.remove(m_combo);
this.remove(m_button);
//
this.setBorder(null);
this.add(m_combo, BorderLayout.CENTER);
this.add(m_button, BorderLayout.EAST);
}
@Override
public void setReadWrite(boolean value) {
setReadWrite0(value);
GridTab m_mTab = m_mField.getGridTab();
String m_DocStatus = (String) m_mTab.getValue("DocStatus");
// DocStatus
if (m_DocStatus == null)
m_DocStatus = "";
// Is the Trx closed? Reversed / Voided / Cloased
if (m_DocStatus.equals("RE") || m_DocStatus.equals("VO") || m_DocStatus.equals("CL"))
{
m_button.setVisible(false);
return;
}
boolean m_onlyRule = false;
// Document is not complete - allow to change the Payment Rule only
if (m_DocStatus.equals("CO") || m_DocStatus.equals("WP"))
m_onlyRule = false;
else
m_onlyRule = true;
boolean m_isSOTrx = "Y".equals(Env.getContext(Env.getCtx(), m_mField.getWindowNo(), "IsSOTrx"));
// PO only Rule
if (!m_onlyRule // Only order has Warehouse
&& !m_isSOTrx && m_mTab.getValue("M_Warehouse_ID") != null)
m_onlyRule = true;
m_button.setVisible(value && !m_onlyRule);
}
private void setReadWrite0(boolean value)
{
boolean rw = value;
if (m_lookup == null)
rw = false;
if (m_combo.isReadWrite() != value)
{
m_combo.setReadWrite(rw);
setUI (false);
if (value) {
m_settingValue = true; // disable actions
refresh();
m_settingValue = false;
}
setValue (m_value);
}
}
@Override
public boolean isReadWrite() {
return m_combo.isReadWrite();
}
@Override
public void setMandatory(boolean mandatory) {
m_combo.setMandatory(mandatory);
}
@Override
public boolean isMandatory() {
return m_combo.isMandatory();
}
@Override
public void setBackground(boolean error) {
m_combo.setBackground(error);
}
@Override
public void requestFocus ()
{
if (m_lookup != null)
m_combo.requestFocus ();
}
@Override
public void setValue(Object value) {
log.fine(m_columnName + "=" + value);
m_settingValue = true; // disable actions
m_value = value;
// Set both for switching
if (value == null)
{
m_combo.setValue (value);
m_lastDisplay = "";
m_settingValue = false;
return;
}
if (m_lookup == null)
{
m_combo.setValue (value);
m_lastDisplay = value.toString();
m_settingValue = false;
return;
}
//must call m_combo.setvalue after m_lookup as
//loading of combo data might happen in m_lookup.getDisplay
m_lastDisplay = m_lookup.getDisplay(value);
m_combo.setValue (value);
if (m_lastDisplay.equals("<-1>"))
{
m_lastDisplay = "";
m_value = null;
}
boolean notFound = m_lastDisplay.startsWith("<") && m_lastDisplay.endsWith(">");
// Nothing showing in Combo and should be showing
if (m_combo.getSelectedItem() == null)
{
// lookup found nothing too
if (notFound)
{
log.finest(m_columnName + "=" + value + ": Not found - " + m_lastDisplay);
// we may have a new value
m_lookup.refresh();
m_combo.setValue (value);
m_lastDisplay = m_lookup.getDisplay(value);
notFound = m_lastDisplay.startsWith("<") && m_lastDisplay.endsWith(">");
}
if (notFound && value instanceof Integer && m_lookup.getDisplayType() != DisplayType.ID) // for IDs is ok to be out of the list
{
m_value = null;
actionCombo (null); // data binding
log.fine(m_columnName + "=" + value + ": Not found");
}
// we have lookup
else if (m_combo.getSelectedItem() == null)
{
NamePair pp = m_lookup.get(value);
if (pp != null)
{
log.fine(m_columnName + " added to combo - " + pp);
// Add to Combo
m_combo.addItem (pp);
m_combo.setValue (value);
}
}
// Not in Lookup - set to Null
if (m_combo.getSelectedItem() == null)
{
if (value instanceof Integer && m_lookup.getDisplayType() != DisplayType.ID) // for IDs is ok to be out of the list
{
log.info(m_columnName + "=" + value + ": not in Lookup - set to NULL");
actionCombo (null); // data binding (calls setValue again)
m_value = null;
}
}
}
m_settingValue = false;
}
@Override
public void propertyChange(PropertyChangeEvent evt) {
if (m_stopediting)
return;
// log.fine( "VLookup.propertyChange", evt);
if (evt.getPropertyName().equals(GridField.PROPERTY))
{
m_inserting = GridField.INSERTING.equals(evt.getOldValue()); // MField.setValue
setValue(evt.getNewValue());
m_inserting = false;
}
}
@Override
public Object getValue() {
return m_combo.getValue ();
}
@Override
public String getDisplay() {
return m_combo.getDisplay();
}
@Override
public void setField(GridField mField) {
m_mField = mField;
}
@Override
public GridField getField() {
return m_mField;
}
@Override
public void actionPerformed(ActionEvent e) {
if (m_settingValue || m_settingFocus || m_stopediting)
return;
log.config(m_columnName + " - " + e.getActionCommand() + ", ComboValue=" + m_combo.getSelectedItem());
// Combo Selection
if (e.getSource() == m_combo)
{
Object value = getValue();
Object o = m_combo.getSelectedItem();
if (o != null)
{
String s = o.toString();
// don't allow selection of inactive
if (s.startsWith(MLookup.INACTIVE_S) && s.endsWith(MLookup.INACTIVE_E))
{
log.info(m_columnName + " - selection inactive set to NULL");
value = null;
}
}
actionCombo (value); // data binding
}
// Button pressed
else if (e.getSource() == m_button)
actionButton ();
}
@Override
public void addActionListener(ActionListener listener) {
m_combo.addActionListener(listener);
}
private void actionCombo (Object value)
{
log.fine("Value=" + value);
try
{
// -> GridController.vetoableChange
fireVetoableChange (m_columnName, null, value);
}
catch (PropertyVetoException pve)
{
log.log(Level.SEVERE, m_columnName, pve);
}
// is the value updated ?
boolean updated = false;
Object updatedValue = value;
if (updatedValue instanceof Object[] && ((Object[])updatedValue).length > 0)
{
updatedValue = ((Object[])updatedValue)[0];
}
if (updatedValue == null && m_value == null)
updated = true;
else if (updatedValue != null && value.equals(m_value))
updated = true;
if (!updated)
{
// happens if VLookup is used outside of APanel/GridController (no property listener)
log.fine(m_columnName + " - Value explicitly set - new=" + updatedValue + ", old=" + m_value);
// phib: the following check causes the update to fail on jre > 1.6.0_13
// commenting out as it does not appear to be necessary
//if (getListeners(PropertyChangeListener.class).length <= 0)
setValue(updatedValue);
}
} // actionCombo
private void actionButton ()
{
m_button.setEnabled(false); // disable double click
if (m_lookup == null)
return; // leave button disabled
m_combo.requestFocus(); // closes other editors
int windowNo = m_lookup.getWindowNo();
Object newValue = getValue();
if (newValue != null)
{
IPaymentForm pf = VPaymentFormFactory.create(windowNo, getField().getGridTab(), (String) newValue);
if(pf != null)
{
VPaymentFormDialog dialog = (VPaymentFormDialog) pf.getWindow();
if(dialog.isInitOK())
{
dialog.setLocationRelativeTo(null);
pf.showWindow();
pf.closeWindow();
getField().getGridTab().dataRefresh();
}
else
pf.closeWindow();
}
}
m_button.setEnabled(true);
m_combo.requestFocus();
} // actionButton
@Override
public void focusGained (FocusEvent e)
{
if (m_combo == null || m_combo.getEditor() == null)
return;
if ((e.getSource() != m_combo && e.getSource() != m_combo.getEditor().getEditorComponent())
|| e.isTemporary() || m_haveFocus || m_lookup == null)
return;
//avoid repeated query
if (m_lookup.isValidated() && m_lookup.isLoaded())
{
m_haveFocus = true;
return;
}
//
m_haveFocus = true; // prevents calling focus gained twice
m_settingFocus = true; // prevents actionPerformed
//
Object obj = m_lookup.getSelectedItem();
log.config(m_columnName
+ " - Start Count=" + m_combo.getItemCount() + ", Selected=" + obj);
// log.fine( "VLookupHash=" + this.hashCode());
boolean popupVisible = m_combo.isPopupVisible();
m_lookup.fillComboBox(isMandatory(), true, true, false); // only validated & active
if (popupVisible)
{
//refresh
m_combo.hidePopup();
m_combo.showPopup();
}
log.config(m_columnName
+ " - Update Count=" + m_combo.getItemCount() + ", Selected=" + m_lookup.getSelectedItem());
m_lookup.setSelectedItem(obj);
log.config(m_columnName
+ " - Selected Count=" + m_combo.getItemCount() + ", Selected=" + m_lookup.getSelectedItem());
//
m_settingFocus = false;
} // focusGained
@Override
public void focusLost(FocusEvent e)
{
if (e.isTemporary()
|| m_lookup == null
|| !m_button.isEnabled() ) // set by actionButton
return;
// Combo lost focus
if (e.getSource() != m_combo && e.getSource() != m_combo.getEditor().getEditorComponent())
return;
if (m_lookup.isValidated() && !m_lookup.hasInactive())
{
m_haveFocus = false;
return;
}
//
m_settingFocus = true; // prevents actionPerformed
//
log.config(m_columnName + " = " + m_combo.getSelectedItem());
Object obj = m_combo.getSelectedItem();
/*
// set original model
if (!m_lookup.isValidated())
m_lookup.fillComboBox(true); // previous selection
*/
// Set value
if (obj != null)
{
m_combo.setSelectedItem(obj);
// original model may not have item
if (!m_combo.getSelectedItem().equals(obj))
{
log.fine(m_columnName + " - added to combo - " + obj);
m_combo.addItem(obj);
m_combo.setSelectedItem(obj);
}
}
// actionCombo(getValue());
m_settingFocus = false;
m_haveFocus = false; // can gain focus again
} // focusLost
public void setToolTipText(String text)
{
super.setToolTipText(text);
m_button.setToolTipText(text);
m_combo.setToolTipText(text);
}
public int refresh()
{
if (m_lookup == null)
return -1;
//no need to refresh readonly lookup, just remove direct cache
if (!isReadWrite()) {
m_lookup.removeAllElements();
return 0;
}
return m_lookup.refresh();
} // refresh
public void setStopEditing(boolean stopediting) {
m_stopediting = stopediting;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 311 B

View File

@ -202,9 +202,10 @@ public class AdempiereWebUI extends Window implements EventListener<Event>, IWeb
// Create adempiere Session - user id in ctx
Session currSess = Executions.getCurrent().getDesktop().getSession();
HttpSession httpSess = (HttpSession) currSess.getNativeSession();
String x_Forward_IP = Executions.getCurrent().getHeader("X-Forwarded-For");
MSession mSession = MSession.get (ctx, currSess.getRemoteAddr(),
currSess.getRemoteHost(), httpSess.getId() );
MSession mSession = MSession.get (ctx, x_Forward_IP!=null ? x_Forward_IP : currSess.getRemoteAddr(),
currSess.getRemoteHost(), httpSess.getId() );
currSess.setAttribute("Check_AD_User_ID", Env.getAD_User_ID(ctx));

View File

@ -42,6 +42,7 @@ import org.adempiere.webui.editor.IZoomableEditor;
import org.adempiere.webui.editor.WButtonEditor;
import org.adempiere.webui.editor.WEditor;
import org.adempiere.webui.editor.WEditorPopupMenu;
import org.adempiere.webui.editor.WPaymentEditor;
import org.adempiere.webui.editor.WebEditorFactory;
import org.adempiere.webui.event.ContextMenuListener;
import org.adempiere.webui.util.GridTabDataBinder;
@ -161,6 +162,7 @@ DataStatusListener, IADTabpanel
{
initComponents();
addEventListener(ON_DEFER_SET_SELECTED_NODE, this);
addEventListener(WPaymentEditor.ON_SAVE_PAYMENT, this);
}
private void initComponents()
@ -854,7 +856,7 @@ DataStatusListener, IADTabpanel
{
Events.sendEvent(this, new Event(ON_TOGGLE_EVENT, this));
}
else if (event.getTarget() == treePanel.getTree()) {
else if (treePanel != null && event.getTarget() == treePanel.getTree()) {
Treeitem item = treePanel.getTree().getSelectedItem();
navigateTo((DefaultTreeNode)item.getValue());
}
@ -863,6 +865,9 @@ DataStatusListener, IADTabpanel
setSelectedNode(gridTab.getRecord_ID());
}
}
else if (WPaymentEditor.ON_SAVE_PAYMENT.equals(event.getName())) {
windowPanel.onSavePayment();
}
}
private void navigateTo(DefaultTreeNode value) {

View File

@ -87,7 +87,6 @@ import org.compiere.util.DB;
import org.compiere.util.DisplayType;
import org.compiere.util.Env;
import org.compiere.util.Msg;
import org.compiere.util.Util;
import org.compiere.util.WebDoc;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Executions;
@ -451,12 +450,21 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
private void initQueryOnNew(MQuery result) {
GridTab curTab = adTabbox.getSelectedGridTab();
boolean onNew = false;
if (curTab.isHighVolume() && m_findCreateNew)
onNew();
onNew = true;
else if (result == null && curTab.getRowCount() == 0 && Env.isAutoNew(ctx, curWindowNo))
onNew();
onNew = true;
else if (!curTab.isReadOnly() && curTab.isQueryNewRecord())
onNew();
onNew = true;
if (onNew) {
Executions.schedule(AEnv.getDesktop(), new EventListener<Event>() {
@Override
public void onEvent(Event event) throws Exception {
onNew();
}
}, new Event("onInsert"));
}
}
/**
@ -1211,7 +1219,9 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
{
adTabbox.updateDetailPaneToolbar(changed, readOnly);
}
toolbar.enableIgnore(adTabbox.needSave(true, false));
toolbar.enableIgnore(adTabbox.needSave(true, false) ||
adTabbox.getSelectedGridTab().isNew() ||
(adTabbox.getSelectedDetailADTabpanel() != null && adTabbox.getSelectedDetailADTabpanel().getGridTab().isNew()));
if (changed && !readOnly && !toolbar.isSaveEnable() ) {
if (tabPanel.getGridTab().getRecord_ID() > 0) {
@ -1579,6 +1589,18 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
});
}
public void onSavePayment()
{
onSave(false, false, new Callback<Boolean>() {
@Override
public void onCallback(Boolean result) {
onRefresh(false, false);
}
});
}
/**
* @param onSaveEvent
*/

View File

@ -33,6 +33,7 @@ import org.compiere.model.DataStatusEvent;
import org.compiere.model.MRole;
import org.compiere.util.Env;
import org.compiere.util.Msg;
import org.compiere.util.Util;
import org.zkoss.zhtml.Text;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Execution;
@ -42,7 +43,6 @@ import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.Events;
import org.zkoss.zk.ui.event.KeyEvent;
import org.zkoss.zk.ui.event.MouseEvent;
import org.zkoss.zk.ui.util.Clients;
import org.zkoss.zul.Caption;
import org.zkoss.zul.Div;
@ -126,9 +126,9 @@ public class BreadCrumb extends Div implements EventListener<Event>{
toolbar.appendChild(btnPrevious);
btnRecordInfo = new ToolBarButton();
btnRecordInfo.setLabel("");
btnRecordInfo.setStyle("font-size: 12px");
btnRecordInfo.setTooltiptext("Record Info");
btnRecordInfo.setTooltiptext(Util.cleanAmp(Msg.getMsg(Env.getCtx(), "Who")));
btnRecordInfo.addEventListener(Events.ON_CLICK, this);
btnRecordInfo.setSclass("breadcrumb-record-info");
toolbar.appendChild(btnRecordInfo);
btnNext = createButton("Next", "Next", "Next");
toolbar.appendChild(btnNext);
@ -274,7 +274,7 @@ public class BreadCrumb extends Div implements EventListener<Event>{
btn.setAttribute(AdempiereIdGenerator.ZK_COMPONENT_PREFIX_ATTRIBUTE, btn.getName());
btn.setImage("/images/"+image + "24.png");
btn.setTooltiptext(Msg.getMsg(Env.getCtx(),tooltip));
btn.setSclass("toolbar-button");
btn.setSclass("breadcrumb-toolbar-button");
buttons.put(name, btn);
this.appendChild(btn);

View File

@ -0,0 +1,244 @@
package org.adempiere.webui.apps.form;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Enumeration;
import org.adempiere.webui.component.Column;
import org.adempiere.webui.component.Columns;
import org.adempiere.webui.component.Grid;
import org.adempiere.webui.component.GridFactory;
import org.adempiere.webui.component.Label;
import org.adempiere.webui.component.ListItem;
import org.adempiere.webui.component.Listbox;
import org.adempiere.webui.component.ListboxFactory;
import org.adempiere.webui.component.Row;
import org.adempiere.webui.component.Rows;
import org.adempiere.webui.editor.WDateEditor;
import org.adempiere.webui.editor.WNumberEditor;
import org.adempiere.webui.window.FDialog;
import org.compiere.grid.PaymentFormCash;
import org.compiere.model.GridTab;
import org.compiere.model.MConversionRate;
import org.compiere.model.MInvoice;
import org.compiere.util.Env;
import org.compiere.util.KeyNamePair;
import org.compiere.util.Msg;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
public class WPaymentFormCash extends PaymentFormCash implements EventListener<Event> {
private WPaymentFormWindow window;
private Label bBankAccountLabel = new Label();
private Listbox bBankAccountCombo = ListboxFactory.newDropdownListbox();
private Label bCashBookLabel = new Label();
private Listbox bCashBookCombo = ListboxFactory.newDropdownListbox();
private Label bCurrencyLabel = new Label();
private Listbox bCurrencyCombo = ListboxFactory.newDropdownListbox();
private Label bDateLabel = new Label();
private WDateEditor bDateField;
private Label bAmountLabel = new Label();
private WNumberEditor bAmountField = new WNumberEditor();
public WPaymentFormCash(int windowNo, GridTab mTab) {
super(windowNo, mTab);
bDateField = new WDateEditor("DateAcct", false, false, true, "DateAcct");
window = new WPaymentFormWindow(this, windowNo);
init();
//Bojana&Daniel
//If Invoice is Vendor invoice then Cash has to be created by negative amount
int C_Invoice_ID = Env.getContextAsInt(Env.getCtx(), getWindowNo(), "C_Invoice_ID");
MInvoice invoice_tmp = new MInvoice (Env.getCtx(), C_Invoice_ID, null);
if (! invoice_tmp.isSOTrx())
{
bAmountField.setValue(m_Amount.negate());
}else {
bAmountField.setValue(m_Amount);
}
invoice_tmp = null;
}
public void init() {
Grid bPanelLayout = GridFactory.newGridLayout();
window.getPanel().appendChild(bPanelLayout);
bCashBookLabel.setText(Msg.translate(Env.getCtx(), "C_CashBook_ID"));
bCurrencyLabel.setText(Msg.translate(Env.getCtx(), "C_Currency_ID"));
bAmountLabel.setText(Msg.getMsg(Env.getCtx(), "Amount"));
//bAmountField.setText("");
bDateLabel.setText(Msg.translate(Env.getCtx(), "DateAcct"));
window.getPanel().setId("bPanel");
Columns columns = new Columns();
bPanelLayout.appendChild(columns);
Column column = new Column();
columns.appendChild(column);
column.setWidth("40%");
column = new Column();
columns.appendChild(column);
column.setWidth("60%");
bAmountField.getComponent().setWidth("150px");
Rows rows = bPanelLayout.newRows();
Row row = rows.newRow();
if (m_Cash_As_Payment) {
bBankAccountLabel.setText(Msg.translate(Env.getCtx(), "C_BankAccount_ID"));
row.appendChild(bBankAccountLabel.rightAlign());
row.appendChild(bBankAccountCombo);
} else {
row.appendChild(bCashBookLabel.rightAlign());
row.appendChild(bCashBookCombo);
}
row = rows.newRow();
row.appendChild(bCurrencyLabel.rightAlign());
row.appendChild(bCurrencyCombo);
row = rows.newRow();
row.appendChild(bDateLabel.rightAlign());
row.appendChild(bDateField.getComponent());
row = rows.newRow();
row.appendChild(bAmountLabel.rightAlign());
row.appendChild(bAmountField.getComponent());
}
@Override
public void loadData() {
bAmountField.setValue(m_Amount);
if (m_C_Payment_ID != 0)
bAmountField.setValue(m_mPayment.getPayAmt());
// Existing Cashbook entry
if (m_C_CashLine_ID != 0)
bAmountField.setValue(m_cashLine.getAmount());
// Accounting Date
bDateField.setValue(m_DateAcct);
// Is the currency an EMU currency?
Integer C_Currency_ID = new Integer(m_C_Currency_ID);
if (s_Currencies.containsKey(C_Currency_ID)) {
Enumeration<Integer> en = s_Currencies.keys();
while (en.hasMoreElements()) {
Object key = en.nextElement();
bCurrencyCombo.addItem(s_Currencies.get(key));
}
bCurrencyCombo.addActionListener(this);
bCurrencyCombo.setSelectedKeyNamePair(s_Currencies.get(C_Currency_ID));
}
else // No EMU Currency
{
bCurrencyLabel.setVisible(false); // Cash
bCurrencyCombo.setVisible(false);
}
ArrayList<KeyNamePair> list = getBankAccountList();
for (KeyNamePair pp : list)
bBankAccountCombo.addItem(pp);
// Set Selection
if (selectedBankAccount != null)
bBankAccountCombo.setSelectedKeyNamePair(selectedBankAccount);
list = getCashBookList();
for (KeyNamePair pp : list)
bCashBookCombo.addItem(pp);
// Set Selection
if (selectedCashBook != null)
bCashBookCombo.setSelectedKeyNamePair(selectedCashBook);
}
public void onEvent(Event e)
{
if (e.getTarget() == bCurrencyCombo)
{
KeyNamePair pp = bCurrencyCombo.getSelectedItem().toKeyNamePair();
BigDecimal amt = MConversionRate.convert(Env.getCtx(), m_Amount, m_C_Currency_ID, pp.getKey(), m_AD_Client_ID, m_AD_Org_ID);
bAmountField.setValue(amt);
}
}
@Override
public boolean checkMandatory() {
int C_BankAccount_ID = 0;
/***********************
* Mandatory Data Check
*/
boolean dataOK = true;
if (m_Cash_As_Payment)
{
ListItem selected = bBankAccountCombo.getSelectedItem();
KeyNamePair kp = selected != null ? selected.toKeyNamePair() : null;
if (kp != null)
C_BankAccount_ID = kp.getKey();
}
// find Bank Account if not qualified yet
if (m_Cash_As_Payment && C_BankAccount_ID == 0)
{
// Check & Cash (Payment) must have a bank account
if (C_BankAccount_ID == 0 && m_Cash_As_Payment)
{
FDialog.error(getWindowNo(), window, "FillMandatory", bBankAccountLabel.getValue());
dataOK = false;
}
}
return dataOK;
}
@Override
public boolean saveChangesInTrx(final String trxName) {
int newC_CashBook_ID = m_C_CashBook_ID;
int newC_BankAccount_ID = 0;
if (m_Cash_As_Payment){
// get bank account
ListItem selected = bBankAccountCombo.getSelectedItem();
KeyNamePair kp = selected != null ? selected.toKeyNamePair() : null;
if (kp != null)
newC_BankAccount_ID = kp.getKey();
} else {
// get cash book
ListItem selected = bCashBookCombo.getSelectedItem();
KeyNamePair kp = selected != null ? selected.toKeyNamePair() : null;
if (kp != null)
newC_CashBook_ID = kp.getKey();
}
Timestamp newDateAcct = (Timestamp)bDateField.getValue();
boolean ok = save(newC_BankAccount_ID,newC_CashBook_ID, newDateAcct, (BigDecimal) bAmountField.getValue(), trxName);
if (!ok)
FDialog.error(getWindowNo(), window, "PaymentError", processMsg);
else if (processMsg != null)
FDialog.info(getWindowNo(), window, "PaymentCreated", processMsg);
return true;
}
@Override
public void showWindow() {
window.setVisible(true);
}
@Override
public void closeWindow() {
window.dispose();
}
@Override
public Object getWindow() {
return window;
}
}

View File

@ -0,0 +1,260 @@
package org.adempiere.webui.apps.form;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Enumeration;
import org.adempiere.webui.LayoutUtils;
import org.adempiere.webui.component.Button;
import org.adempiere.webui.component.Column;
import org.adempiere.webui.component.Columns;
import org.adempiere.webui.component.Grid;
import org.adempiere.webui.component.GridFactory;
import org.adempiere.webui.component.Label;
import org.adempiere.webui.component.ListItem;
import org.adempiere.webui.component.Listbox;
import org.adempiere.webui.component.ListboxFactory;
import org.adempiere.webui.component.Row;
import org.adempiere.webui.component.Rows;
import org.adempiere.webui.component.Textbox;
import org.adempiere.webui.editor.WNumberEditor;
import org.adempiere.webui.window.FDialog;
import org.compiere.grid.PaymentFormCheck;
import org.compiere.model.GridTab;
import org.compiere.model.MConversionRate;
import org.compiere.model.MPaymentValidate;
import org.compiere.util.Env;
import org.compiere.util.KeyNamePair;
import org.compiere.util.Msg;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zul.Cell;
import org.zkoss.zul.Space;
public class WPaymentFormCheck extends PaymentFormCheck implements EventListener<Event> {
private WPaymentFormWindow window;
private Label sBankAccountLabel = new Label();
private Listbox sBankAccountCombo = ListboxFactory.newDropdownListbox();
private Label sCurrencyLabel = new Label();
private Listbox sCurrencyCombo = ListboxFactory.newDropdownListbox();
private Label sAmountLabel = new Label();
private WNumberEditor sAmountField = new WNumberEditor();
private Label sRoutingLabel = new Label();
private Textbox sRoutingField = new Textbox();
private Label sNumberLabel = new Label();
private Textbox sNumberField = new Textbox();
private Textbox sCheckField = new Textbox();
private Label sCheckLabel = new Label();
private Button sOnline = new Button();
private Label sStatus = new Label();
public WPaymentFormCheck(int windowNo, GridTab mTab) {
super(windowNo, mTab);
window = new WPaymentFormWindow(this, windowNo);
init();
}
public void init() {
Grid sPanelLayout = GridFactory.newGridLayout();
window.getPanel().appendChild(sPanelLayout);
sBankAccountLabel.setText(Msg.translate(Env.getCtx(), "C_BankAccount_ID"));
sAmountLabel.setText(Msg.getMsg(Env.getCtx(), "Amount"));
sRoutingLabel.setText(Msg.translate(Env.getCtx(), "RoutingNo"));
sNumberLabel.setText(Msg.translate(Env.getCtx(), "AccountNo"));
sCheckLabel.setText(Msg.translate(Env.getCtx(), "CheckNo"));
sCheckField.setCols(8);
sCurrencyLabel.setText(Msg.translate(Env.getCtx(), "C_Currency_ID"));
sNumberField.setWidth("100pt");
sRoutingField.setWidth("70pt");
sStatus.setText(" ");
sOnline.setLabel(Msg.getMsg(Env.getCtx(), "Online"));
LayoutUtils.addSclass("action-text-button", sOnline);
// sOnline.addActionListener(this);
window.getPanel().setId("sPanel");
Columns columns = new Columns();
sPanelLayout.appendChild(columns);
Column column = new Column();
columns.appendChild(column);
column.setWidth("30%");
column = new Column();
columns.appendChild(column);
column.setWidth("50%");
column = new Column();
columns.appendChild(column);
column.setWidth("20%");
sAmountField.getComponent().setWidth("150px");
Rows rows = sPanelLayout.newRows();
Row row = rows.newRow();
row.appendChild(sBankAccountLabel.rightAlign());
row.appendChild(sBankAccountCombo);
row.appendChild(new Space());
row = rows.newRow();
row.appendChild(sCurrencyLabel.rightAlign());
row.appendChild(sCurrencyCombo);
row.appendChild(new Space());
row = rows.newRow();
row.appendChild(sAmountLabel.rightAlign());
row.appendChild(sAmountField.getComponent());
row.appendChild(new Space());
row = rows.newRow();
row.appendChild(sRoutingLabel.rightAlign());
row.appendChild(sRoutingField);
row.appendChild(new Space());
row = rows.newRow();
row.appendChild(sNumberLabel.rightAlign());
row.appendChild(sNumberField);
row.appendChild(new Space());
row = rows.newRow();
row.appendChild(sCheckLabel.rightAlign());
row.appendChild(sCheckField);
row.appendChild(sOnline);
row = rows.newRow();
Cell cell = new Cell();
row.appendChild(cell);
cell.appendChild(sStatus);
cell.setColspan(3);
}
@Override
public void loadData() {
sAmountField.setValue(m_Amount);
if (m_C_Payment_ID != 0)
{
sRoutingField.setText(m_mPayment.getRoutingNo());
sNumberField.setText(m_mPayment.getAccountNo());
sCheckField.setText(m_mPayment.getCheckNo());
sStatus.setText(m_mPayment.getR_PnRef());
sAmountField.setValue(m_mPayment.getPayAmt());
}
// Is the currency an EMU currency?
Integer C_Currency_ID = new Integer(m_C_Currency_ID);
if (s_Currencies.containsKey(C_Currency_ID))
{
Enumeration<Integer> en = s_Currencies.keys();
while (en.hasMoreElements())
{
Object key = en.nextElement();
sCurrencyCombo.addItem(s_Currencies.get(key));
}
sCurrencyCombo.addActionListener(this);
sCurrencyCombo.setSelectedKeyNamePair(s_Currencies.get(C_Currency_ID));
}
else // No EMU Currency
{
sCurrencyLabel.setVisible(false); // Check
sCurrencyCombo.setVisible(false);
}
ArrayList<KeyNamePair> list = getBankAccountList();
for (KeyNamePair pp : list)
sBankAccountCombo.addItem(pp);
// Set Selection
if (selectedBankAccount != null)
sBankAccountCombo.setSelectedKeyNamePair(selectedBankAccount);
}
public void onEvent(Event e)
{
if (e.getTarget() == sCurrencyCombo)
{
KeyNamePair pp = sCurrencyCombo.getSelectedItem().toKeyNamePair();
BigDecimal amt = MConversionRate.convert(Env.getCtx(),
m_Amount, m_C_Currency_ID, pp.getKey(), m_AD_Client_ID, m_AD_Org_ID);
sAmountField.setValue(amt);
}
// else if (e.getTarget() == sOnline) {
// window.lockUI();
// Clients.response(new AuEcho(window, "runProcessOnline", null));
// }
}
@Override
public boolean checkMandatory() {
int C_BankAccount_ID = 0;
/***********************
* Mandatory Data Check
*/
boolean dataOK = true;
ListItem selected = sBankAccountCombo.getSelectedItem();
KeyNamePair kp = selected != null ? selected.toKeyNamePair() : null;
if (kp != null)
C_BankAccount_ID = kp.getKey();
String error = MPaymentValidate.validateRoutingNo(sRoutingField.getText());
if (error.length() != 0)
{
FDialog.error(getWindowNo(), window, error);
dataOK = false;
}
error = MPaymentValidate.validateAccountNo(sNumberField.getText());
if (error.length() != 0)
{
FDialog.error(getWindowNo(), window, error);
dataOK = false;
}
error = MPaymentValidate.validateCheckNo(sCheckField.getText());
if (error.length() != 0)
{
FDialog.error(getWindowNo(), window, error);
dataOK = false;
}
// Check & Cash (Payment) must have a bank account
if (C_BankAccount_ID == 0)
{
FDialog.error(getWindowNo(), window, "FillMandatory", sBankAccountLabel.getValue());
dataOK = false;
}
//
log.config("OK=" + dataOK);
return dataOK;
}
@Override
public boolean saveChangesInTrx(final String trxName) {
int newC_BankAccount_ID = 0;
ListItem selected = sBankAccountCombo.getSelectedItem();
KeyNamePair kp = selected != null ? selected.toKeyNamePair() : null;
if (kp != null)
newC_BankAccount_ID = kp.getKey();
boolean ok = save(newC_BankAccount_ID, sRoutingField.getText(), sNumberField.getText(), sCheckField.getText(), (BigDecimal) sAmountField.getValue());
if (!ok)
FDialog.error(getWindowNo(), window, "PaymentError", processMsg);
else if (processMsg != null)
FDialog.info(getWindowNo(), window, "PaymentCreated", m_mPayment.getDocumentNo());
return true;
}
@Override
public void showWindow() {
window.setVisible(true);
}
@Override
public void closeWindow() {
window.dispose();
}
@Override
public Object getWindow() {
return window;
}
}

View File

@ -0,0 +1,212 @@
package org.adempiere.webui.apps.form;
import java.math.BigDecimal;
import org.adempiere.webui.LayoutUtils;
import org.adempiere.webui.component.Button;
import org.adempiere.webui.component.Column;
import org.adempiere.webui.component.Columns;
import org.adempiere.webui.component.Grid;
import org.adempiere.webui.component.GridFactory;
import org.adempiere.webui.component.Label;
import org.adempiere.webui.component.ListItem;
import org.adempiere.webui.component.Listbox;
import org.adempiere.webui.component.ListboxFactory;
import org.adempiere.webui.component.Row;
import org.adempiere.webui.component.Rows;
import org.adempiere.webui.component.Textbox;
import org.adempiere.webui.editor.WNumberEditor;
import org.adempiere.webui.window.FDialog;
import org.compiere.grid.PaymentFormCreditCard;
import org.compiere.model.GridTab;
import org.compiere.util.Env;
import org.compiere.util.Msg;
import org.compiere.util.ValueNamePair;
import org.zkoss.zk.au.out.AuEcho;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.util.Clients;
import org.zkoss.zul.Space;
public class WPaymentFormCreditCard extends PaymentFormCreditCard implements EventListener<Event> {
private WPaymentFormWindow window;
private Label kTypeLabel = new Label();
private Listbox kTypeCombo = ListboxFactory.newDropdownListbox();
private Label kNumberLabel = new Label();
private Textbox kNumberField = new Textbox();
private Label kExpLabel = new Label();
private Textbox kExpField = new Textbox();
private Label kAmountLabel = new Label();
private WNumberEditor kAmountField = new WNumberEditor();
private Label kApprovalLabel = new Label();
private Textbox kApprovalField = new Textbox();
private Button kOnline = new Button();
private Label kStatus = new Label();
public WPaymentFormCreditCard(int windowNo, GridTab mTab) {
super(windowNo, mTab);
window = new WPaymentFormWindow(this, windowNo);
init();
}
public void init() {
Grid kLayout = GridFactory.newGridLayout();
window.getPanel().appendChild(kLayout);
kNumberField.setCols(16);
kExpField.setCols(4);
kApprovalField.setCols(4);
kTypeLabel.setText(Msg.translate(Env.getCtx(), "CreditCardType"));
kNumberLabel.setText(Msg.translate(Env.getCtx(), "CreditCardNumber"));
kExpLabel.setText(Msg.getMsg(Env.getCtx(), "Expires"));
kApprovalLabel.setText(Msg.translate(Env.getCtx(), "VoiceAuthCode"));
kAmountLabel.setText(Msg.getMsg(Env.getCtx(), "Amount"));
kOnline.setLabel(Msg.getMsg(Env.getCtx(), "Online"));
LayoutUtils.addSclass("action-text-button", kOnline);
kOnline.addActionListener(this);
kStatus.setText(" ");
window.getPanel().setId("kPanel");
Columns columns = new Columns();
kLayout.appendChild(columns);
Column column = new Column();
columns.appendChild(column);
column.setWidth("30%");
column = new Column();
columns.appendChild(column);
column.setWidth("50%");
column = new Column();
columns.appendChild(column);
column.setWidth("20%");
kAmountField.getComponent().setWidth("150px");
Rows rows = kLayout.newRows();
Row row = rows.newRow();
row.appendChild(kTypeLabel.rightAlign());
row.appendChild(kTypeCombo);
row.appendChild(new Space());
row = rows.newRow();
row.appendChild(kNumberLabel.rightAlign());
row.appendChild(kNumberField);
row.appendChild(new Space());
row = rows.newRow();
row.appendChild(kExpLabel.rightAlign());
row.appendChild(kExpField);
row.appendChild(new Space());
row = rows.newRow();
row.appendChild(kAmountLabel.rightAlign());
row.appendChild(kAmountField.getComponent());
row.appendChild(new Space());
row = rows.newRow();
row.appendChild(kApprovalLabel.rightAlign());
row.appendChild(kApprovalField);
row.appendChild(kOnline);
row = rows.newRow();
row.appendCellChild(kStatus, 3);
}
@Override
public void loadData() {
kAmountField.setValue(m_Amount);
if (m_C_Payment_ID != 0)
{
kNumberField.setText(m_mPayment.getCreditCardNumber());
kExpField.setText(m_mPayment.getCreditCardExp(null));
kApprovalField.setText(m_mPayment.getVoiceAuthCode());
kStatus.setText(m_mPayment.getR_PnRef());
kAmountField.setValue(m_mPayment.getPayAmt());
// if approved/paid, don't let it change
kTypeCombo.setEnabled(!m_mPayment.isApproved());
kNumberField.setReadonly(m_mPayment.isApproved());
kExpField.setReadonly(m_mPayment.isApproved());
kApprovalField.setReadonly(m_mPayment.isApproved());
kOnline.setEnabled(!m_mPayment.isApproved());
kAmountField.setReadWrite(!m_mPayment.isApproved());
}
/**
* Load Credit Cards
*/
ValueNamePair[] ccs = getCreditCardList();
for (int i = 0; i < ccs.length; i++)
kTypeCombo.addItem(ccs[i]);
// Set Selection
if (selectedCreditCard != null)
kTypeCombo.setSelectedValueNamePair(selectedCreditCard);
}
public void onEvent(Event e)
{
if (e.getTarget() == kOnline) {
window.lockUI();
Clients.response(new AuEcho(window, "runProcessOnline", null));
}
}
@Override
public boolean checkMandatory() {
return true;
}
@Override
public boolean saveChangesInTrx(final String trxName) {
String newCCType = m_CCType;
ListItem selected = kTypeCombo.getSelectedItem();
ValueNamePair vp = selected != null ? selected.toValueNamePair() : null;
if (vp != null)
newCCType = vp.getValue();
boolean ok = save(newCCType, kNumberField.getText(), kExpField.getText(), (BigDecimal) kAmountField.getValue());
if(!ok)
FDialog.error(getWindowNo(), window, "PaymentError", processMsg);
else if (processMsg != null)
FDialog.info(getWindowNo(), window, "PaymentCreated", processMsg);
return true;
}
@Override
public void processOnline()
{
log.config("");
if (!checkMandatory())
return;
ValueNamePair vp = kTypeCombo.getSelectedItem().toValueNamePair();
String CCType = vp.getValue();
boolean ok = processOnline(CCType, kNumberField.getText(), kExpField.getText());
if (!ok)
FDialog.error(getWindowNo(), window, "PaymentError", processMsg);
else if (processMsg != null)
FDialog.info(getWindowNo(), window, "PaymentProcessed", processMsg);
} // online
@Override
public void showWindow() {
window.setVisible(true);
}
@Override
public void closeWindow() {
window.dispose();
}
@Override
public Object getWindow() {
return window;
}
}

View File

@ -0,0 +1,10 @@
package org.adempiere.webui.apps.form;
import org.compiere.model.GridTab;
public class WPaymentFormDirectDebit extends WPaymentFormDirectDeposit {
public WPaymentFormDirectDebit(int windowNo, GridTab mTab) {
super(windowNo, mTab);
}
}

View File

@ -0,0 +1,150 @@
package org.adempiere.webui.apps.form;
import java.util.ArrayList;
import org.adempiere.webui.LayoutUtils;
import org.adempiere.webui.component.Button;
import org.adempiere.webui.component.Column;
import org.adempiere.webui.component.Columns;
import org.adempiere.webui.component.Grid;
import org.adempiere.webui.component.GridFactory;
import org.adempiere.webui.component.Label;
import org.adempiere.webui.component.ListItem;
import org.adempiere.webui.component.Listbox;
import org.adempiere.webui.component.ListboxFactory;
import org.adempiere.webui.component.Row;
import org.adempiere.webui.component.Rows;
import org.adempiere.webui.component.Textbox;
import org.adempiere.webui.window.FDialog;
import org.compiere.grid.PaymentFormDirectDeposit;
import org.compiere.model.GridTab;
import org.compiere.util.Env;
import org.compiere.util.KeyNamePair;
import org.compiere.util.Msg;
import org.zkoss.zul.Space;
public class WPaymentFormDirectDeposit extends PaymentFormDirectDeposit {
private WPaymentFormWindow window;
private Label tAccountLabel = new Label();
private Listbox tAccountCombo = ListboxFactory.newDropdownListbox();
private Button tOnline = new Button();
private Textbox tRoutingField = new Textbox();
private Textbox tNumberField = new Textbox();
private Label tStatus = new Label();
private Label tRoutingText = new Label();
private Label tNumberText = new Label();
public WPaymentFormDirectDeposit(int windowNo, GridTab mTab) {
super(windowNo, mTab);
window = new WPaymentFormWindow(this, windowNo);
init();
}
public void init() {
Grid tPanelLayout = GridFactory.newGridLayout();
window.getPanel().appendChild(tPanelLayout);
tAccountLabel.setText(Msg.translate(Env.getCtx(), "C_BP_BankAccount_ID"));
tRoutingField.setCols(8);
tNumberField.setCols(10);
tRoutingText.setText(Msg.translate(Env.getCtx(), "RoutingNo"));
tNumberText.setText(Msg.translate(Env.getCtx(), "AccountNo"));
tOnline.setLabel(Msg.getMsg(Env.getCtx(), "Online"));
LayoutUtils.addSclass("action-text-button", tOnline);
tStatus.setText(" ");
window.getPanel().setId("tPanel");
Columns columns = new Columns();
tPanelLayout.appendChild(columns);
Column column = new Column();
columns.appendChild(column);
column.setWidth("30%");
column = new Column();
columns.appendChild(column);
column.setWidth("50%");
column = new Column();
columns.appendChild(column);
column.setWidth("20%");
Rows rows = tPanelLayout.newRows();
Row row = rows.newRow();
row.appendChild(tAccountLabel.rightAlign());
row.appendChild(tAccountCombo);
row.appendChild(new Space());
row = rows.newRow();
row.appendChild(tRoutingText.rightAlign());
row.appendChild(tRoutingField);
row.appendChild(new Space());
row = rows.newRow();
row.appendChild(tNumberText.rightAlign());
row.appendChild(tNumberField);
row.appendChild(tOnline);
row = rows.newRow();
row.appendCellChild(tStatus, 3);
}
@Override
public void loadData() {
if (m_C_Payment_ID != 0)
{
tRoutingField.setText(m_mPayment.getRoutingNo());
tNumberField.setText(m_mPayment.getAccountNo());
tStatus.setText(m_mPayment.getR_PnRef());
}
ArrayList<KeyNamePair> list = getBankAccountList();
for (KeyNamePair pp : list)
tAccountCombo.addItem(pp);
}
@Override
public boolean checkMandatory() {
/***********************
* Mandatory Data Check
*/
boolean dataOK = true;
ListItem selected = tAccountCombo.getSelectedItem();
KeyNamePair bpba = selected != null ? selected.toKeyNamePair() : null;
if (bpba == null)
{
FDialog.error(getWindowNo(), window, "PaymentBPBankNotFound");
dataOK = false;
}
//
log.config("OK=" + dataOK);
return dataOK;
}
@Override
public boolean saveChangesInTrx(final String trxName) {
boolean ok = save();
if (!ok)
FDialog.error(getWindowNo(), window, "PaymentError", processMsg);
else if (processMsg != null)
FDialog.info(getWindowNo(), window, "PaymentCreated", m_mPayment.getDocumentNo());
return true;
}
@Override
public void showWindow() {
window.setVisible(true);
}
@Override
public void closeWindow() {
window.dispose();
}
@Override
public Object getWindow() {
return window;
}
}

View File

@ -0,0 +1,72 @@
package org.adempiere.webui.apps.form;
import java.util.HashMap;
import java.util.logging.Level;
import org.compiere.grid.IPaymentForm;
import org.compiere.grid.PaymentFormCash;
import org.compiere.grid.PaymentFormCheck;
import org.compiere.grid.PaymentFormCreditCard;
import org.compiere.grid.PaymentFormDirectDebit;
import org.compiere.grid.PaymentFormDirectDeposit;
import org.compiere.grid.PaymentFormMixedPOS;
import org.compiere.grid.PaymentFormOnCredit;
import org.compiere.model.GridTab;
import org.compiere.util.CLogger;
public class WPaymentFormFactory {
/** Static Logger */
private static CLogger s_log = CLogger.getCLogger (WPaymentFormFactory.class);
private static HashMap<String, Class<? extends IPaymentForm>> s_registeredClasses = null;
/**
* Register custom WPaymentForm* class
* @param ad_table_id
* @param cl custom class
*/
public static final void registerClass(String paymentRule, Class<? extends IPaymentForm> cl)
{
s_registeredClasses.put(paymentRule, cl);
s_log.info("Registered PaymentRule="+paymentRule+", Class="+cl);
}
static
{
// Register defaults:
s_registeredClasses = new HashMap<String, Class<? extends IPaymentForm>>();
s_registeredClasses.put(PaymentFormCash.PAYMENTRULE, WPaymentFormCash.class);
s_registeredClasses.put(PaymentFormCheck.PAYMENTRULE, WPaymentFormCheck.class);
s_registeredClasses.put(PaymentFormCreditCard.PAYMENTRULE, WPaymentFormCreditCard.class);
s_registeredClasses.put(PaymentFormDirectDebit.PAYMENTRULE, WPaymentFormDirectDebit.class);
s_registeredClasses.put(PaymentFormDirectDeposit.PAYMENTRULE, WPaymentFormDirectDeposit.class);
s_registeredClasses.put(PaymentFormMixedPOS.PAYMENTRULE, WPaymentFormMixedPOS.class);
s_registeredClasses.put(PaymentFormOnCredit.PAYMENTRULE, WPaymentFormOnCredit.class);
}
public static IPaymentForm create(int windowNo, GridTab mTab, String paymentRule)
{
IPaymentForm retValue = null;
Class<? extends IPaymentForm> cl = s_registeredClasses.get(paymentRule);
if (cl != null)
{
try
{
java.lang.reflect.Constructor<? extends IPaymentForm> ctor = cl.getConstructor(int.class, GridTab.class);
retValue = ctor.newInstance(windowNo, mTab);
}
catch (Throwable e)
{
s_log.log(Level.SEVERE, e.getLocalizedMessage(), e);
return null;
}
}
if (retValue == null)
{
s_log.info("Unsupported PaymentRule=" + paymentRule);
return null;
}
return retValue;
} // create
}

View File

@ -0,0 +1,43 @@
package org.adempiere.webui.apps.form;
import org.compiere.grid.PaymentFormMixedPOS;
import org.compiere.model.GridTab;
public class WPaymentFormMixedPOS extends PaymentFormMixedPOS {
private WPaymentFormWindow window;
public WPaymentFormMixedPOS(int windowNo, GridTab mTab) {
super(windowNo, mTab);
window = new WPaymentFormWindow(this, windowNo);
}
@Override
public void loadData() {
}
@Override
public boolean checkMandatory() {
return true;
}
@Override
public boolean saveChangesInTrx(final String trxName) {
return true;
}
@Override
public void showWindow() {
window.setVisible(true);
}
@Override
public void closeWindow() {
window.dispose();
}
@Override
public Object getWindow() {
return window;
}
}

View File

@ -0,0 +1,98 @@
package org.adempiere.webui.apps.form;
import java.util.ArrayList;
import org.adempiere.webui.component.Column;
import org.adempiere.webui.component.Columns;
import org.adempiere.webui.component.Grid;
import org.adempiere.webui.component.GridFactory;
import org.adempiere.webui.component.Label;
import org.adempiere.webui.component.ListItem;
import org.adempiere.webui.component.Listbox;
import org.adempiere.webui.component.ListboxFactory;
import org.adempiere.webui.component.Row;
import org.adempiere.webui.component.Rows;
import org.compiere.grid.PaymentFormOnCredit;
import org.compiere.model.GridTab;
import org.compiere.util.Env;
import org.compiere.util.KeyNamePair;
import org.compiere.util.Msg;
public class WPaymentFormOnCredit extends PaymentFormOnCredit {
private WPaymentFormWindow window;
private Label pTermLabel = new Label();
private Listbox pTermCombo = ListboxFactory.newDropdownListbox();
public WPaymentFormOnCredit(int windowNo, GridTab mTab) {
super(windowNo, mTab);
window = new WPaymentFormWindow(this, windowNo);
init();
}
public void init() {
Grid pPanelLayout = GridFactory.newGridLayout();
window.getPanel().appendChild(pPanelLayout);
pTermLabel.setText(Msg.translate(Env.getCtx(), "C_PaymentTerm_ID"));
window.getPanel().setId("pPanel");
Columns columns = new Columns();
pPanelLayout.appendChild(columns);
Column column = new Column();
columns.appendChild(column);
column.setWidth("40%");
column = new Column();
columns.appendChild(column);
column.setWidth("60%");
Rows rows = pPanelLayout.newRows();
Row row = rows.newRow();
row.appendChild(pTermLabel.rightAlign());
row.appendChild(pTermCombo);
}
@Override
public void loadData() {
ArrayList<KeyNamePair> list = getPaymentTermList();
for (KeyNamePair pp : list)
pTermCombo.addItem(pp);
// Set Selection
if (selectedPaymentTerm != null)
pTermCombo.setSelectedKeyNamePair(selectedPaymentTerm);
}
@Override
public boolean checkMandatory() {
return true;
}
@Override
public boolean saveChangesInTrx(final String trxName) {
int newC_PaymentTerm_ID = 0;
ListItem selected = pTermCombo.getSelectedItem();
KeyNamePair kp = selected != null ? selected.toKeyNamePair() : null;
if (kp != null)
newC_PaymentTerm_ID = kp.getKey();
return save(newC_PaymentTerm_ID);
}
@Override
public void showWindow() {
window.setVisible(true);
}
@Override
public void closeWindow() {
window.dispose();
}
@Override
public Object getWindow() {
return window;
}
}

View File

@ -0,0 +1,144 @@
package org.adempiere.webui.apps.form;
import org.adempiere.webui.apps.BusyDialog;
import org.adempiere.webui.component.ConfirmPanel;
import org.adempiere.webui.component.Panel;
import org.adempiere.webui.component.Window;
import org.adempiere.webui.event.DialogEvents;
import org.adempiere.webui.window.FDialog;
import org.compiere.grid.PaymentForm;
import org.compiere.util.Env;
import org.compiere.util.Msg;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zul.Borderlayout;
import org.zkoss.zul.Center;
import org.zkoss.zul.South;
public class WPaymentFormWindow extends Window implements EventListener<Event>, DialogEvents {
private PaymentForm paymentForm;
private int windowNo;
private Panel mainPanel = new Panel();
private Panel centerPanel = new Panel();
private Borderlayout mainLayout = new Borderlayout();
private ConfirmPanel confirmPanel = new ConfirmPanel(true);
private boolean m_isLocked = false;
private boolean initOK = false;
private BusyDialog progressWindow;
public WPaymentFormWindow(PaymentForm paymentForm, int windowNo)
{
super();
this.paymentForm = paymentForm;
this.windowNo = windowNo;
try {
zkInit();
initOK = dynInit(); // Null Pointer if order/invoice not saved yet
} catch (Exception ex) {
FDialog.error(windowNo, this, ex.getMessage());
initOK = false;
}
this.setTitle(Msg.getMsg(Env.getCtx(), "Payment"));
this.setHeight("400px");
this.setWidth("500px");
this.setBorder("normal");
}
private void zkInit() throws Exception {
this.appendChild(mainPanel);
mainPanel.appendChild(mainLayout);
mainPanel.setStyle("width: 100%; height: 100%; padding: 0; margin: 0");
mainLayout.setHeight("100%");
mainLayout.setWidth("100%");
Center center = new Center();
mainLayout.appendChild(center);
center.appendChild(centerPanel = getPanel());
//
South south = new South();
south.setStyle("border: none");
mainLayout.appendChild(south);
south.appendChild(confirmPanel);
confirmPanel.addActionListener(this);
}
private boolean dynInit() throws Exception {
boolean isInitOK = paymentForm.dynInit();
centerPanel.setVisible(!paymentForm.isOnlyRule());
return isInitOK;
}
public Panel getPanel() {
return centerPanel;
}
/**************************************************************************
* Action Listener
*
* @param e
* event
*/
public void onEvent(Event e) {
// Finish
if (e.getTarget().getId().equals(ConfirmPanel.A_OK)) {
if (paymentForm.checkMandatory()) {
paymentForm.saveChanges(); // cannot recover
dispose();
}
} else if (e.getTarget().getId().equals(ConfirmPanel.A_CANCEL))
dispose();
} // actionPerformed
public void runProcessOnline() {
try {
paymentForm.processOnline();
} finally {
unlockUI();
}
}
public void unlockUI() {
if (!m_isLocked) return;
m_isLocked = false;
hideBusyDialog();
updateUI();
}
public void lockUI() {
if (m_isLocked) return;
m_isLocked = true;
showBusyDialog();
}
private void hideBusyDialog() {
if (progressWindow != null) {
progressWindow.dispose();
progressWindow = null;
}
}
private void updateUI() {
if (paymentForm.isApproved())
dispose();
}
private void showBusyDialog() {
progressWindow = new BusyDialog();
progressWindow.setPage(this.getPage());
progressWindow.doHighlighted();
}
public boolean isInitOK()
{
return initOK;
}
}

View File

@ -25,17 +25,17 @@ public class Group extends org.zkoss.zul.Group {
public Group() {
super();
setSclass("z-group");
setZclass("z-group");
}
public Group(String label) {
super(label);
setSclass("z-group");
setZclass("z-group");
}
public <T> Group(String label, T value) {
super(label, value);
setSclass("z-group");
setZclass("z-group");
}
public String getLabel() {
@ -101,9 +101,10 @@ public class Group extends org.zkoss.zul.Group {
private void init()
{
setSclass("z-group-cnt");
setZclass("z-group-cnt");
img = new Image();
img.setZclass("z-group-img");
appendChild(img);
img.addEventListener(Events.ON_CLICK, this);

View File

@ -0,0 +1,92 @@
package org.adempiere.webui.component;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import org.adempiere.webui.LayoutUtils;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.Events;
import org.zkoss.zul.Comboitem;
import org.zkoss.zul.Div;
import org.zkoss.zul.Hlayout;
public class Paymentbox extends Div {
protected PropertyChangeSupport m_propertyChangeListeners = new PropertyChangeSupport(this);
protected Combobox combo;
protected Button btn;
public Paymentbox() {
initComponents();
}
public Paymentbox(Comboitem comboitem) {
initComponents();
setSelectedComboItem(comboitem);
}
public void setButtonImage(String imageSrc) {
btn.setImage(imageSrc);
}
private void initComponents() {
Hlayout hlayout = new Hlayout();
this.appendChild(hlayout);
hlayout.setHflex("1");
combo = new Combobox();
hlayout.appendChild(combo);
combo.setHflex("1");
btn = new Button();
btn.setTabindex(-1);
btn.setSclass("editor-button");
btn.setHflex("0");
hlayout.appendChild(btn);
LayoutUtils.addSclass("editor-box", this);
}
public Combobox getCombobox() {
return combo;
}
public void setSelectedComboItem(Comboitem comboitem) {
combo.setSelectedItem(comboitem);
}
public Comboitem getSelectedComboItem() {
return combo.getSelectedItem();
}
public void setEnabled(boolean isComboEnabled, boolean isBtnEnabled) {
combo.setReadonly(!isComboEnabled);
btn.setEnabled(isBtnEnabled);
btn.setVisible(isBtnEnabled);
if (isBtnEnabled) {
btn.setSclass("editor-button");
btn.setParent(this.getFirstChild());
} else {
btn.detach();
}
}
public boolean isEnabled() {
return !combo.isReadonly();
}
public boolean addEventListener(String evtnm, EventListener listener) {
if (Events.ON_CLICK.equals(evtnm)) {
return btn.addEventListener(evtnm, listener);
} else {
return combo.addEventListener(evtnm, listener);
}
}
public synchronized void addPropertyChangeListener(PropertyChangeListener l) {
m_propertyChangeListeners.addPropertyChangeListener(l);
}
public Button getButton() {
return btn;
}
}

View File

@ -115,7 +115,6 @@ public class DefaultDesktop extends TabbedDesktop implements MenuListener, Seria
pnlHead.setParent(n);
West w = new West();
w.setTitle(" ");
w.setId("desktop-left-column");
layout.appendChild(w);
w.setSclass("desktop-left-column");
@ -146,6 +145,7 @@ public class DefaultDesktop extends TabbedDesktop implements MenuListener, Seria
homeTab = new Tabpanel();
windowContainer.addWindow(homeTab, Util.cleanAmp(Msg.getMsg(Env.getCtx(), "Home")), false);
homeTab.getLinkedTab().setSclass("desktop-hometab");
homeTab.setSclass("desktop-home-tabpanel");
BusyDialog busyDialog = new BusyDialog();
busyDialog.setShadow(false);
homeTab.appendChild(busyDialog);

View File

@ -0,0 +1,338 @@
package org.adempiere.webui.editor;
import javax.swing.event.ListDataListener;
import org.adempiere.webui.adwindow.ADTabpanel;
import org.adempiere.webui.apps.AEnv;
import org.adempiere.webui.apps.form.WPaymentFormFactory;
import org.adempiere.webui.apps.form.WPaymentFormWindow;
import org.adempiere.webui.component.Paymentbox;
import org.adempiere.webui.component.Window;
import org.adempiere.webui.event.DialogEvents;
import org.adempiere.webui.event.ValueChangeEvent;
import org.compiere.grid.IPaymentForm;
import org.compiere.model.GridField;
import org.compiere.model.GridTab;
import org.compiere.model.MPaymentLookup;
import org.compiere.util.DisplayType;
import org.compiere.util.Env;
import org.compiere.util.KeyNamePair;
import org.compiere.util.NamePair;
import org.compiere.util.ValueNamePair;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.Events;
import org.zkoss.zul.Comboitem;
public class WPaymentEditor extends WEditor implements ListDataListener {
public final static String ON_SAVE_PAYMENT = "onSavePayment";
public final static String[] LISTENER_EVENTS = {Events.ON_SELECT};
private MPaymentLookup lookup;
private Object oldValue;
public WPaymentEditor(GridField gridField) {
super(new Paymentbox(), gridField);
lookup = (MPaymentLookup) gridField.getLookup();
init();
}
private void init()
{
getComponent().getCombobox().setAutocomplete(true);
getComponent().getCombobox().setAutodrop(true);
getComponent().getCombobox().addEventListener(Events.ON_BLUR, this);
getComponent().setButtonImage("/images/Payment10.png");
getComponent().getButton().addActionListener(this);
if (lookup != null)
{
lookup.addListDataListener(this);
//always need the empty item for zk to work correctly
lookup.setMandatory(false);
//no need to refresh readonly lookup
if (isReadWrite())
lookup.refresh();
refreshList();
}
}
@Override
public String getDisplay() {
String display = null;
Comboitem selItem = getComponent().getCombobox().getSelectedItem();
if (selItem != null)
{
display = selItem.getLabel();
}
return display;
}
@Override
public Object getValue() {
Object retVal = null;
Comboitem selItem = getComponent().getCombobox().getSelectedItem();
if (selItem != null)
{
retVal = selItem.getValue();
if ((retVal instanceof Integer) && (Integer)retVal == -1)
retVal = null;
}
return retVal;
}
@Override
public void setValue(Object value) {
if (value != null && (value instanceof Integer || value instanceof String))
{
getComponent().getCombobox().setValue(value);
if (!getComponent().getCombobox().isSelected(value))
{
if (isReadWrite() && lookup != null)
lookup.refresh();
Object curValue = oldValue;
oldValue = value;
refreshList();
//still not in list, reset to zero
if (!getComponent().getCombobox().isSelected(value))
{
if (value instanceof Integer && gridField != null && gridField.getDisplayType() != DisplayType.ID) // for IDs is ok to be out of the list
{
getComponent().getCombobox().setValue(null);
if (curValue == null)
curValue = value;
ValueChangeEvent changeEvent = new ValueChangeEvent(this, this.getColumnName(), curValue, null);
super.fireValueChange(changeEvent);
oldValue = null;
}
}
}
else
{
oldValue = value;
}
}
else
{
getComponent().getCombobox().setValue(null);
oldValue = value;
}
}
@Override
public Paymentbox getComponent() {
return (Paymentbox) super.getComponent();
}
@Override
public boolean isReadWrite() {
return getComponent().isEnabled();
}
@Override
public void setReadWrite(boolean readWrite) {
GridTab m_mTab = gridField.getGridTab();
String m_DocStatus = (String) m_mTab.getValue("DocStatus");
// DocStatus
if (m_DocStatus == null)
m_DocStatus = "";
// Is the Trx closed? Reversed / Voided / Cloased
if (m_DocStatus.equals("RE") || m_DocStatus.equals("VO") || m_DocStatus.equals("CL"))
{
getComponent().setEnabled(readWrite, false);
return;
}
boolean m_onlyRule = false;
// Document is not complete - allow to change the Payment Rule only
if (m_DocStatus.equals("CO") || m_DocStatus.equals("WP"))
m_onlyRule = false;
else
m_onlyRule = true;
boolean m_isSOTrx = "Y".equals(Env.getContext(Env.getCtx(), gridField.getWindowNo(), "IsSOTrx"));
// PO only Rule
if (!m_onlyRule // Only order has Warehouse
&& !m_isSOTrx && m_mTab.getValue("M_Warehouse_ID") != null)
m_onlyRule = true;
getComponent().setEnabled(readWrite, readWrite && !m_onlyRule);
}
private void refreshList()
{
if (getComponent().getCombobox().getItemCount() > 0)
getComponent().getCombobox().removeAllItems();
if (isReadWrite())
{
if (lookup != null)
{
int size = lookup.getSize();
boolean found = false;
for (int i = 0; i < size; i++)
{
Object obj = lookup.getElementAt(i);
if (obj instanceof KeyNamePair)
{
KeyNamePair lookupKNPair = (KeyNamePair) obj;
getComponent().getCombobox().appendItem(lookupKNPair.getName(), lookupKNPair.getKey());
if (!found && oldValue != null && oldValue instanceof Integer &&
lookupKNPair.getKey() == (Integer)oldValue)
{
found = true;
}
}
else if (obj instanceof ValueNamePair)
{
ValueNamePair lookupKNPair = (ValueNamePair) obj;
getComponent().getCombobox().appendItem(lookupKNPair.getName(), lookupKNPair.getValue());
if (!found && oldValue != null && lookupKNPair.getValue().equals(oldValue.toString()))
{
found = true;
}
}
}
if (!found && oldValue != null)
{
NamePair pair = lookup.getDirect(oldValue, false, false);
if (pair != null) {
if (pair instanceof KeyNamePair) {
int key = ((KeyNamePair)pair).getKey();
getComponent().getCombobox().appendItem(pair.getName(), key);
} else if (pair instanceof ValueNamePair) {
ValueNamePair valueNamePair = (ValueNamePair) pair;
getComponent().getCombobox().appendItem(valueNamePair.getName(), valueNamePair.getValue());
}
}
}
}
}
else
{
if (lookup != null)
{
NamePair pair = lookup.getDirect(oldValue, false, false);
if (pair != null) {
if (pair instanceof KeyNamePair) {
int key = ((KeyNamePair)pair).getKey();
getComponent().getCombobox().appendItem(pair.getName(), key);
} else if (pair instanceof ValueNamePair) {
ValueNamePair valueNamePair = (ValueNamePair) pair;
getComponent().getCombobox().appendItem(valueNamePair.getName(), valueNamePair.getValue());
}
}
}
}
getComponent().getCombobox().setValue(oldValue);
}
@Override
public void onEvent(Event event) throws Exception {
if (Events.ON_SELECT.equalsIgnoreCase(event.getName()))
{
Object newValue = getValue();
if (isValueChange(newValue)) {
ValueChangeEvent changeEvent = new ValueChangeEvent(this, this.getColumnName(), oldValue, newValue);
super.fireValueChange(changeEvent);
oldValue = newValue;
}
}
else if (Events.ON_BLUR.equalsIgnoreCase(event.getName()))
{
Comboitem item = getComponent().getCombobox().getSelectedItem();
if (item == null)
{
setValue(oldValue);
}
else
{
//on select not fire for empty label item
if (item.getLabel().equals(""))
{
Object newValue = getValue();
if (isValueChange(newValue)) {
ValueChangeEvent changeEvent = new ValueChangeEvent(this, this.getColumnName(), oldValue, newValue);
super.fireValueChange(changeEvent);
oldValue = newValue;
}
}
}
}
else if (Events.ON_CLICK.equalsIgnoreCase(event.getName()))
{
int windowNo = lookup == null ? 0 : lookup.getWindowNo();
Object newValue = getValue();
if (newValue != null)
{
final IPaymentForm pf = WPaymentFormFactory.create(windowNo, getGridField().getGridTab(), (String) newValue);
if (pf != null)
{
final WPaymentFormWindow window = (WPaymentFormWindow) pf.getWindow();
if (window.isInitOK())
{
window.setAttribute(Window.MODE_KEY, Window.MODE_HIGHLIGHTED);
window.addEventListener(DialogEvents.ON_WINDOW_CLOSE, new EventListener<Event>() {
@Override
public void onEvent(Event event) throws Exception {
if (pf.needSave())
{
Component comp = getComponent();
while(comp != null)
{
comp = comp.getParent();
if (comp instanceof ADTabpanel)
{
Events.sendEvent(comp, new Event(ON_SAVE_PAYMENT, comp));
return;
}
}
// Events.sendEvent(new Event("onSave", this));
// onSave(false, false, new Callback<Boolean>() {
//
// @Override
// public void onCallback(Boolean result) {
// onRefresh(false, false);
// }
//
// });
}
}
});
pf.showWindow();
AEnv.showWindow(window);
}
}
}
}
}
@Override
public void contentsChanged(javax.swing.event.ListDataEvent e) {
refreshList();
}
@Override
public void intervalAdded(javax.swing.event.ListDataEvent e) {}
@Override
public void intervalRemoved(javax.swing.event.ListDataEvent e) {}
private boolean isValueChange(Object newValue) {
return (oldValue == null && newValue != null) || (oldValue != null && newValue == null)
|| ((oldValue != null && newValue != null) && !oldValue.equals(newValue));
}
public String[] getEvents() {
return LISTENER_EVENTS;
}
}

View File

@ -28,6 +28,7 @@ import org.adempiere.webui.editor.WLocatorEditor;
import org.adempiere.webui.editor.WNumberEditor;
import org.adempiere.webui.editor.WPAttributeEditor;
import org.adempiere.webui.editor.WPasswordEditor;
import org.adempiere.webui.editor.WPaymentEditor;
import org.adempiere.webui.editor.WSearchEditor;
import org.adempiere.webui.editor.WStringEditor;
import org.adempiere.webui.editor.WTableDirEditor;
@ -132,6 +133,11 @@ public class DefaultEditorFactory implements IEditorFactory {
editor = new WTableDirEditor(gridField);
}
else if (displayType == DisplayType.Payment)
{
editor = new WPaymentEditor(gridField);
}
else if (displayType == DisplayType.URL)
{
editor = new WUrlEditor(gridField);

View File

@ -132,6 +132,9 @@ public class ReportAction implements EventListener<Event>
Vbox vb = new Vbox();
vb.setWidth("100%");
winReport.appendChild(vb);
winReport.setSclass("toolbar-popup-window");
vb.setSclass("toolbar-popup-window-cnt");
vb.setAlign("stretch");
Hbox hb = new Hbox();
hb.setAlign("center");

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 310 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 267 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 257 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 277 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 276 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 498 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 281 B

View File

@ -112,7 +112,8 @@ html,body {
.desktop-header {
background-color: #F4F4F4;
width: 100%;
height: 38px;
height: 35px;
border-bottom: 1px solid #C5C5C5;
}
.desktop-header-font {
@ -163,6 +164,17 @@ html,body {
height: 24px;
}
.breadcrumb-toolbar-button {
background-color: transparent;
display:inline-block;
width: 22px;
height: 22px;
}
.breadcrumb-record-info {
font-size: 12px;
}
.toolbar-button .z-toolbarbutton-body .z-toolbarbutton-cnt img {
width: 22px;
height: 22px;
@ -211,7 +223,7 @@ div.wc-modal, div.wc-modal-none, div.wc-highlighted, div.wc-highlighted-none {
.desktop-tabbox {
padding-top: 0px;
background-color: #F4F4F4;
background-color: #E4E4E4;
}
.desktop-tabbox .z-tab {
@ -222,6 +234,11 @@ div.wc-modal, div.wc-modal-none, div.wc-highlighted, div.wc-highlighted-none {
border: none;
}
.desktop-center {
padding-top: 4px;
background-color: #E4E4E4;
}
.desktop-tabpanel {
margin: 0;
padding: 0;
@ -242,20 +259,18 @@ div.wc-modal, div.wc-modal-none, div.wc-highlighted, div.wc-highlighted-none {
.desktop-left-column {
width: 300px;
border: none;
background-color: #F4F4F4;
background-color: #E4E4E4;
padding-top: 4px;
}
.desktop-left-column + .z-west-splt {
border-top: 1px solid #c5c5c5;
border-top: none;
border-right: 1px solid #c5c5c5;
}
.desktop-left-column + .z-west-splt .z-west-splt-btn {
display: none;
border-left: 1px solid #c5c5c5;
}
.desktop-left-column .z-west-body {
border-right: 1px solid #c5c5c5;
border-right: none;
}
.desktop-left-column .z-west-header {
@ -267,7 +282,7 @@ div.wc-modal, div.wc-modal-none, div.wc-highlighted, div.wc-highlighted-none {
}
.desktop-hometab {
margin-left: 2px !important;
margin-left: 4px !important;
}
.desktop-menu-popup {
@ -282,6 +297,43 @@ div.wc-modal, div.wc-modal-none, div.wc-highlighted, div.wc-highlighted-none {
border-top: 1px solid #c5c5c5;
}
.desktop-home-tabpanel {
background-color: #FFFFFF;
}
<%-- dashlet --%>
.desktop-home-tabpanel .z-panel-tl, .desktop-home-tabpanel .z-panel-tr,
.desktop-home-tabpanel .z-panel-hr, .desktop-home-tabpanel .z-panel-hl,
.desktop-home-tabpanel .z-panel-hm {
background-image: none; background-color: #FFFFFF;
}
.desktop-home-tabpanel .z-panel-hl {
padding-bottom: 1px;
border-bottom: 2px solid #008BB6;
}
.desktop-home-tabpanel .z-panel-hl .z-panel-header {
padding: 0 0 2px 0;
color: #333; font-weight: bold;
}
.desktop-left-column .z-panel-tl, .desktop-left-column .z-panel-tr,
.desktop-left-column .z-panel-hr, .desktop-left-column .z-panel-hl,
.desktop-left-column .z-panel-hm {
background-image: none; background-color: #E4E4E4;
}
.desktop-left-column .z-panel-hl {
padding-bottom: 1px;
border-bottom: 2px solid #008BB6;
}
.desktop-left-column .z-panel-hl .z-panel-header {
padding: 0 0 2px 0;
color: #333; font-weight: bold;
}
.menu-panel {
width: 100% !important;
height: 100% !important;
@ -353,7 +405,7 @@ div.wc-modal, div.wc-modal-none, div.wc-highlighted, div.wc-highlighted-none {
.adwindow-breadcrumb {
height: 30px;
background-color: #FFF;
padding-left: 2px;
padding-left: 5px;
}
.adwindow-detailpane {
@ -379,12 +431,17 @@ div.wc-modal, div.wc-modal-none, div.wc-highlighted, div.wc-highlighted-none {
.adwindow-detailpane-tabbox {
min-height: 200px; width: 99%; margin: auto;
background-color: #E4E4E4;
}
.adwindow-gridview-detail {
height: 250px;
}
.adwindow-gridview-detail + .z-south-splt {
border-top: 1px solid #C5C5C5;
}
.adwindow-gridview-detail .z-south-body {
padding-top: 1px;
}
@ -595,53 +652,11 @@ span.z-tree-tee, span.z-tree-last {
<%-- Group --%>
tr.z-group {
background: #E9F2FB repeat-x 0 0;
background-image: url(../images/group_bg.gif);
background-image: url(../images/group_bg.gif) !important;
}
tr.z-group td.z-row-inner {
overflow: hidden;
border-top: 2px solid #81BAF5;
border-bottom: 1px solid #BCD2EF;
color: #2C559C;
font-weight: bold;
}
div.z-group-cnt {
display:table-cell;
vertical-align:middle;
}
div.z-group-cnt span.z-label {
display:inline-block;
vertical-align:middle;
color: #2C559C;
padding: 5px;
width: auto;
height: 100%;
font-weight: bold;
}
img.z-group-img-open, img.z-group-img-close {
width: 18px;
min-height: 18px;
height: 100%;
vertical-align: top;
cursor: pointer;
border: 0;
}
img.z-group-img-open {
background-image: url(../images/group-open.png);
background-position: center center;
background-color: transparent;
background-repeat: no-repeat;
}
img.z-group-img-close {
background-image: url(../images/group-close.png);
background-position: center center;
background-color: transparent;
background-repeat: no-repeat;
.z-group-inner .z-group-cnt .z-label, .z-group-inner .z-group-cnt {
font-family: Helvetica,Arial,sans-serif;
}
<%-- Tablet --%>
@ -715,11 +730,6 @@ div.z-vfiletree-body td.menu-tree-cell {
font-size: ${fontSizeM}; font-weight: normal; overflow: visible;
}
<%-- dashlet --%>
.z-panel-hl .z-panel-header {
padding: 0 0 2px 0;
}
div.simileAjax-bubble-container {
z-index: 2800 !important;
}
@ -777,6 +787,14 @@ div.simileAjax-bubble-container {
background-color: transparent !important;
}
.grid-layout tr.z-row-over>td.z-row-inner {
border: none !important;
}
.grid-layout tr.z-row-over>td.z-row-inner, .grid-layout tr.z-row-over>.z-cell {
background-image: none !important;
}
.confirm-panel {
width: 100%;
height: 36px;
@ -808,7 +826,42 @@ tbody.z-grid-empty-body td {
text-align: left;
}
<%-- notification message --%>
.z-notification .z-notification-cl,
.z-notification .z-notification-cnt {
width: 300px;
}
<%-- toolbar popup dialog --%>
.toolbar-popup-window .z-window-popup-cnt {
margin-top: 6px;
}
.toolbar-popup-window-cnt {
}
.toolbar-popup-window::before {
content: '';
position: absolute;
width: 0px;
height: 0px;
top: -7px;
left: 6px;
border-top: 7px dashed transparent;
border-left: 7px dashed transparent;
border-right: 7px dashed transparent;
border-bottom: 7px solid #ACACAC;
}
.toolbar-popup-window-cnt::before {
content: '';
position: absolute;
width: 0px;
height: 0px;
top: -5px;
left: 7px;
border-top: 6px dashed transparent;
border-left: 6px dashed transparent;
border-right: 6px dashed transparent;
border-bottom: 6px solid #FFF;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 411 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 398 B

View File

@ -0,0 +1,16 @@
package org.compiere.grid;
public interface IPaymentForm {
public boolean checkMandatory();
public boolean saveChangesInTrx(final String trxName);
public boolean needSave();
public void showWindow();
public void closeWindow();
public Object getWindow();
}

View File

@ -0,0 +1,302 @@
package org.compiere.grid;
import java.math.BigDecimal;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.Hashtable;
import java.util.logging.Level;
import org.adempiere.exceptions.AdempiereException;
import org.compiere.model.GridTab;
import org.compiere.model.MCashLine;
import org.compiere.model.MPayment;
import org.compiere.model.MSysConfig;
import org.compiere.util.CLogger;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.compiere.util.KeyNamePair;
import org.compiere.util.Trx;
import org.compiere.util.TrxRunnable;
public abstract class PaymentForm implements IPaymentForm {
/** Logger */
protected CLogger log = CLogger.getCLogger(getClass());
/** Window */
private int m_WindowNo = 0;
/** Tab */
private GridTab m_mTab;
// Data from Order/Invoice
public String m_DocStatus = null;
/** Start Payment Rule */
public String m_PaymentRule = "";
/** Start Payment Term */
public int m_C_PaymentTerm_ID = 0;
/** Start Acct Date */
public Timestamp m_DateAcct = null;
/** Start Payment */
public int m_C_Payment_ID = 0;
public MPayment m_mPayment = null;
public MPayment m_mPaymentOriginal = null;
/** Start CashBook Line */
public int m_C_CashLine_ID = 0;
public MCashLine m_cashLine = null;
/** Start CreditCard */
public String m_CCType = "";
/** Start Bank Account */
public int m_C_BankAccount_ID = 0;
/** Start CashBook */
public int m_C_CashBook_ID = 0;
/** Invoice Currency */
public int m_C_Currency_ID = 0;
public int m_AD_Client_ID = 0;
public boolean m_Cash_As_Payment = true;
public int m_AD_Org_ID = 0;
public int m_C_BPartner_ID = 0;
public BigDecimal m_Amount = Env.ZERO; // Payment Amount
public boolean m_needSave = false;
/** Only allow changing Rule */
public boolean m_onlyRule = false;
/** Is SOTrx */
public boolean m_isSOTrx = true;
public Hashtable<Integer,KeyNamePair> s_Currencies = null;
public PaymentForm(int WindowNo, GridTab mTab) {
m_WindowNo = WindowNo;
m_isSOTrx = "Y".equals(Env.getContext(Env.getCtx(), WindowNo, "IsSOTrx"));
m_mTab = mTab;
}
public boolean dynInit() throws Exception {
m_DocStatus = (String) m_mTab.getValue("DocStatus");
log.config(m_DocStatus);
if (m_mTab.getValue("C_BPartner_ID") == null) {
throw new AdempiereException("SaveErrorRowNotFound");
}
// DocStatus
if (m_DocStatus == null)
m_DocStatus = "";
// Is the Trx closed? Reversed / Voided / Cloased
if (m_DocStatus.equals("RE") || m_DocStatus.equals("VO") || m_DocStatus.equals("CL"))
return false;
// Document is not complete - allow to change the Payment Rule only
if (m_DocStatus.equals("CO") || m_DocStatus.equals("WP"))
m_onlyRule = false;
else
m_onlyRule = true;
// PO only Rule
if (!m_onlyRule // Only order has Warehouse
&& !m_isSOTrx && m_mTab.getValue("M_Warehouse_ID") != null)
m_onlyRule = true;
// centerPanel.setVisible(!m_onlyRule);
// Amount
m_Amount = (BigDecimal)m_mTab.getValue("GrandTotal");
if (!m_onlyRule && m_Amount.compareTo(Env.ZERO) == 0)
{
throw new AdempiereException("PaymentZero");
}
/**
* Get Data from Grid
*/
m_AD_Client_ID = ((Integer)m_mTab.getValue("AD_Client_ID")).intValue();
m_Cash_As_Payment = MSysConfig.getBooleanValue(MSysConfig.CASH_AS_PAYMENT,true, m_AD_Client_ID);
m_AD_Org_ID = ((Integer)m_mTab.getValue("AD_Org_ID")).intValue();
m_C_BPartner_ID = ((Integer)m_mTab.getValue("C_BPartner_ID")).intValue();
m_PaymentRule = (String)m_mTab.getValue("PaymentRule");
m_C_Currency_ID = ((Integer)m_mTab.getValue("C_Currency_ID")).intValue();
m_DateAcct = (Timestamp)m_mTab.getValue("DateAcct");
if (m_mTab.getValue("C_PaymentTerm_ID") != null)
m_C_PaymentTerm_ID = ((Integer)m_mTab.getValue("C_PaymentTerm_ID")).intValue();
// Existing Payment
if (m_mTab.getValue("C_Payment_ID") != null)
{
m_C_Payment_ID = ((Integer)m_mTab.getValue("C_Payment_ID")).intValue();
if (m_C_Payment_ID != 0)
{
m_mPayment = new MPayment(Env.getCtx(), m_C_Payment_ID, null);
m_mPaymentOriginal = new MPayment(Env.getCtx(), m_C_Payment_ID, null); // full copy
m_CCType = m_mPayment.getCreditCardType();
m_C_BankAccount_ID = m_mPayment.getC_BankAccount_ID();
}
}
if (m_mPayment == null)
{
m_mPayment = new MPayment (Env.getCtx (), 0, null);
m_mPayment.setAD_Org_ID(m_AD_Org_ID);
m_mPayment.setAmount (m_C_Currency_ID, m_Amount);
}
if (s_Currencies == null)
loadCurrencies();
m_cashLine = null;
m_C_CashLine_ID = 0;
if (m_mTab.getValue("C_CashLine_ID") != null)
{
m_C_CashLine_ID = ((Integer)m_mTab.getValue("C_CashLine_ID")).intValue();
if (m_C_CashLine_ID == 0)
m_cashLine = null;
else
{
m_cashLine = new MCashLine (Env.getCtx(), m_C_CashLine_ID, null);
m_DateAcct = m_cashLine.getStatementDate();
m_C_CashBook_ID = m_cashLine.getCashBook().getC_CashBook_ID();
}
}
/**
* Payment Combo
*/
if (m_PaymentRule == null)
m_PaymentRule = "";
loadData();
return true;
}
public abstract void loadData();
/**************************************************************************
* Save Changes
* @return true, if Window can exit
*/
public boolean saveChanges() {
// BF [ 1920179 ] perform the save in a trx's context.
final boolean[] success = new boolean[] { false };
final TrxRunnable r = new TrxRunnable() {
public void run(String trxName) {
// set trxname for class objects
if (m_cashLine != null)
m_cashLine.set_TrxName(trxName);
if (m_mPayment != null)
m_mPayment.set_TrxName(trxName);
if (m_mPaymentOriginal != null)
m_mPaymentOriginal.set_TrxName(trxName);
// only Payment Rule
if (m_onlyRule)
success[0] = true;
else
success[0] = saveChangesInTrx(trxName);
}
};
try {
Trx.run(r);
} catch (Throwable e) {
success[0] = false;
throw new AdempiereException("PaymentError", e);
}
if (m_cashLine != null)
m_cashLine.set_TrxName(null);
if (m_mPayment != null)
m_mPayment.set_TrxName(null);
if (m_mPaymentOriginal != null)
m_mPayment.set_TrxName(null);
return success[0];
} // saveChanges
/**
* Fill s_Currencies with EMU currencies
*/
protected void loadCurrencies()
{
s_Currencies = new Hashtable<Integer,KeyNamePair>(12); // Currenly only 10+1
String SQL = "SELECT C_Currency_ID, ISO_Code FROM C_Currency "
+ "WHERE (IsEMUMember='Y' AND EMUEntryDate<SysDate) OR IsEuro='Y' "
+ "ORDER BY 2";
try
{
PreparedStatement pstmt = DB.prepareStatement(SQL, null);
ResultSet rs = pstmt.executeQuery();
while (rs.next())
{
int id = rs.getInt(1);
String name = rs.getString(2);
s_Currencies.put(new Integer(id), new KeyNamePair(id, name));
}
rs.close();
pstmt.close();
}
catch (SQLException e)
{
log.log(Level.SEVERE, SQL, e);
}
} // loadCurrencies
/**
* Need Save record (payment with waiting order)
* @return true if payment with waiting order
*/
public boolean needSave()
{
return m_needSave;
} // needSave
/**
* Get Invoice ID for Order
* @param C_Order_ID order
* @return C_Invoice_ID or 0 if not found
*/
protected int getInvoiceID (int C_Order_ID)
{
int retValue = 0;
String sql = "SELECT C_Invoice_ID FROM C_Invoice WHERE C_Order_ID=? "
+ "ORDER BY C_Invoice_ID DESC"; // last invoice
try
{
PreparedStatement pstmt = DB.prepareStatement(sql, null);
pstmt.setInt(1, C_Order_ID);
ResultSet rs = pstmt.executeQuery();
if (rs.next())
retValue = rs.getInt(1);
rs.close();
pstmt.close();
}
catch (SQLException e)
{
log.log(Level.SEVERE, sql, e);
}
return retValue;
} // getInvoiceID
public void processOnline()
{
}
public GridTab getGridTab()
{
return m_mTab;
}
public boolean isOnlyRule()
{
return m_onlyRule;
}
public boolean isApproved()
{
return m_mPayment.isApproved();
}
public int getWindowNo()
{
return m_WindowNo;
}
}

View File

@ -0,0 +1,326 @@
package org.compiere.grid;
import java.math.BigDecimal;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.logging.Level;
import org.compiere.model.GridTab;
import org.compiere.model.MCash;
import org.compiere.model.MCashLine;
import org.compiere.model.MInvoice;
import org.compiere.model.MOrder;
import org.compiere.model.MPayment;
import org.compiere.model.MRole;
import org.compiere.process.DocAction;
import org.compiere.util.CLogger;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.compiere.util.KeyNamePair;
import org.compiere.util.TimeUtil;
public abstract class PaymentFormCash extends PaymentForm {
public static final String PAYMENTRULE = MInvoice.PAYMENTRULE_Cash;
public PaymentFormCash(int WindowNo, GridTab mTab) {
super(WindowNo, mTab);
}
public KeyNamePair selectedBankAccount;
public ArrayList<KeyNamePair> getBankAccountList() {
selectedBankAccount = null;
ArrayList<KeyNamePair> list = new ArrayList<KeyNamePair>();
/**
* Load Bank Accounts
*/
String SQL = MRole.getDefault().addAccessSQL(
"SELECT C_BankAccount_ID, ba.Name || ' ' || AccountNo, IsDefault "
+ "FROM C_BankAccount ba"
+ " INNER JOIN C_Bank b ON (ba.C_Bank_ID=b.C_Bank_ID) "
+ "WHERE b.IsActive='Y'",
"ba", MRole.SQL_FULLYQUALIFIED, MRole.SQL_RO);
try
{
PreparedStatement pstmt = DB.prepareStatement(SQL, null);
ResultSet rs = pstmt.executeQuery();
while (rs.next())
{
int key = rs.getInt(1);
String name = rs.getString(2);
KeyNamePair pp = new KeyNamePair(key, name);
list.add(pp);
if (key == m_C_BankAccount_ID)
selectedBankAccount = pp;
if (selectedBankAccount == null && rs.getString(3).equals("Y")) // Default
selectedBankAccount = pp;
}
rs.close();
pstmt.close();
}
catch (SQLException ept)
{
log.log(Level.SEVERE, SQL, ept);
}
return list;
}
public KeyNamePair selectedCashBook;
public ArrayList<KeyNamePair> getCashBookList() {
selectedCashBook = null;
ArrayList<KeyNamePair> list = new ArrayList<KeyNamePair>();
/**
* Load Cash Books
*/
String SQL = MRole.getDefault().addAccessSQL(
"SELECT C_CashBook_ID, Name, AD_Org_ID FROM C_CashBook WHERE IsActive='Y'",
"C_CashBook", MRole.SQL_NOTQUALIFIED, MRole.SQL_RO);
try
{
PreparedStatement pstmt = DB.prepareStatement(SQL, null);
ResultSet rs = pstmt.executeQuery();
while (rs.next())
{
int key = rs.getInt(1);
String name = rs.getString(2);
KeyNamePair pp = new KeyNamePair(key, name);
list.add(pp);
if (key == m_C_CashBook_ID)
selectedCashBook = pp;
if (selectedCashBook == null && key == m_AD_Org_ID) // Default Org
selectedCashBook = pp;
}
rs.close();
pstmt.close();
}
catch (SQLException epc)
{
log.log(Level.SEVERE, SQL, epc);
}
if (selectedCashBook != null)
{
if (m_C_CashBook_ID == 0)
m_C_CashBook_ID = selectedCashBook.getKey(); // set to default to avoid 'cashbook changed' message
}
return list;
}
public String processMsg;
public boolean save(int newC_BankAccount_ID, int newC_CashBook_ID, Timestamp newDateAcct, BigDecimal newAmount, String trxName)
{
processMsg = null;
boolean error = false;
int newC_CashLine_ID = m_C_CashLine_ID;
/***********************
* Changed PaymentRule
*/
if (!PAYMENTRULE.equals(m_PaymentRule))
{
log.fine("Changed PaymentRule: " + m_PaymentRule + " -> " + PAYMENTRULE);
// We had a CashBook Entry
log.fine("Old Cash - " + m_cashLine);
if (m_cashLine != null)
{
MCashLine cl = m_cashLine.createReversal();
if (cl.save())
log.config( "CashCancelled");
else
{
processMsg = "CashNotCancelled";
error = true;
}
}
newC_CashLine_ID = 0; // reset
}
// Get Order and optionally Invoice
int C_Order_ID = Env.getContextAsInt(Env.getCtx(), getWindowNo(), "C_Order_ID");
int C_Invoice_ID = Env.getContextAsInt(Env.getCtx(), getWindowNo(), "C_Invoice_ID");
if (C_Invoice_ID == 0 && m_DocStatus.equals("CO"))
C_Invoice_ID = getInvoiceID (C_Order_ID);
// Amount sign negative, if ARC (Credit Memo) or API (AP Invoice)
boolean negateAmt = false;
MInvoice invoice = null;
if (C_Invoice_ID != 0)
{
invoice = new MInvoice (Env.getCtx(), C_Invoice_ID, null);
negateAmt = invoice.isCreditMemo();
}
MOrder order = null;
if (invoice == null && C_Order_ID != 0)
order = new MOrder (Env.getCtx(), C_Order_ID, null);
BigDecimal payAmount = m_Amount;
if (negateAmt)
payAmount = m_Amount.negate();
// Info
log.config("C_Order_ID=" + C_Order_ID + ", C_Invoice_ID=" + C_Invoice_ID + ", NegateAmt=" + negateAmt);
/***********************
* CashBook
*/
if (!m_Cash_As_Payment)
{
log.fine("Cash");
if (C_Invoice_ID == 0 && order == null)
{
log.config("No Invoice!");
processMsg = "CashNotCreated";
error = false;
}
else
{
payAmount = newAmount;
// Changed Amount
if (m_cashLine != null
&& payAmount.compareTo(m_cashLine.getAmount()) != 0)
{
log.config("Changed CashBook Amount");
m_cashLine.setAmount(newAmount);
m_cashLine.saveEx();
}
// Different Date/CashBook
if (m_cashLine != null
&& (newC_CashBook_ID != m_C_CashBook_ID
|| !TimeUtil.isSameDay(m_cashLine.getStatementDate(), newDateAcct)))
{
log.config("Changed CashBook/Date: " + m_C_CashBook_ID + "->" + newC_CashBook_ID);
MCashLine reverse = m_cashLine.createReversal();
reverse.saveEx();
m_cashLine = null;
}
// Create new
if (m_cashLine == null)
{
log.config("New CashBook");
int C_Currency_ID = 0;
if (invoice != null)
C_Currency_ID = invoice.getC_Currency_ID();
if (C_Currency_ID == 0 && order != null)
C_Currency_ID = order.getC_Currency_ID();
MCash cash = null;
if (newC_CashBook_ID != 0)
cash = MCash.get (Env.getCtx(), newC_CashBook_ID, newDateAcct, null);
else // Default
cash = MCash.get (Env.getCtx(), m_AD_Org_ID, newDateAcct, C_Currency_ID, null);
if (cash == null || cash.get_ID() == 0)
{
processMsg = CLogger.retrieveErrorString("CashNotCreated");
error = true;
}
else
{
MCashLine cl = new MCashLine (cash);
// cl.setAmount(new BigDecimal(bAmountField.getText()));
//ADialog.info(m_WindowNo, this, "m_cashLine - New Cashbook", "Amount: "+cl.getAmount());
if (invoice != null)
cl.setInvoice(invoice); // overrides amount
if (order != null)
{
cl.setOrder(order, null); // overrides amount
m_needSave = true;
}
cl.setAmount(newAmount);
cl.saveEx();
log.config("CashCreated");
if (invoice == null && C_Invoice_ID != 0)
{
invoice = new MInvoice (Env.getCtx(), C_Invoice_ID, null);
}
if (invoice != null) {
invoice.setC_CashLine_ID(cl.getC_CashLine_ID());
invoice.saveEx(trxName);
}
if (order == null && C_Order_ID != 0)
{
order = new MOrder (Env.getCtx(), C_Order_ID, null);
}
if (order != null) {
order.setC_CashLine_ID(cl.getC_CashLine_ID());
order.saveEx(trxName);
}
log.config("Update Order & Invoice with CashLine");
}
}
} // have invoice
}
/***********************
* Payments
*/
if (m_Cash_As_Payment)
{
log.fine("Payment - " + PAYMENTRULE);
// Set Amount
m_mPayment.setAmount(m_C_Currency_ID, payAmount);
// Get changes to cash amount
m_mPayment.setTenderType(MPayment.TENDERTYPE_Cash);
m_mPayment.setBankCash(newC_BankAccount_ID, m_isSOTrx, MPayment.TENDERTYPE_Cash);
m_mPayment.setAmount(m_C_Currency_ID, payAmount);
m_mPayment.setC_BPartner_ID(m_C_BPartner_ID);
m_mPayment.setC_Invoice_ID(C_Invoice_ID);
if (order != null)
{
m_mPayment.setC_Order_ID(C_Order_ID);
m_needSave = true;
}
m_mPayment.setDateTrx(m_DateAcct);
m_mPayment.setDateAcct(m_DateAcct);
m_mPayment.saveEx();
// Save/Post
if (m_mPayment.get_ID() > 0 && MPayment.DOCSTATUS_Drafted.equals(m_mPayment.getDocStatus()))
{
boolean ok = m_mPayment.processIt(DocAction.ACTION_Complete);
m_mPayment.saveEx();
if (ok)
processMsg = m_mPayment.getDocumentNo();
else
{
processMsg = "PaymentNotCreated";
error = true;
}
}
else
log.fine("NotDraft " + m_mPayment);
}
/**********************
* Save Values to mTab
*/
log.config("Saving changes");
//
if (!newDateAcct.equals(m_DateAcct))
getGridTab().setValue("DateAcct", newDateAcct);
// Set Payment
if (m_mPayment.getC_Payment_ID() != m_C_Payment_ID)
{
if (m_mPayment.getC_Payment_ID() == 0)
getGridTab().setValue("C_Payment_ID", null);
else
getGridTab().setValue("C_Payment_ID", new Integer(m_mPayment.getC_Payment_ID()));
}
// Set Cash
if (newC_CashLine_ID != m_C_CashLine_ID)
{
if (newC_CashLine_ID == 0)
getGridTab().setValue("C_CashLine_ID", null);
else
getGridTab().setValue("C_CashLine_ID", new Integer(newC_CashLine_ID));
}
return !error;
}
}

View File

@ -0,0 +1,198 @@
package org.compiere.grid;
import java.math.BigDecimal;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import org.compiere.model.GridTab;
import org.compiere.model.MInvoice;
import org.compiere.model.MOrder;
import org.compiere.model.MPayment;
import org.compiere.model.MRole;
import org.compiere.process.DocAction;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.compiere.util.KeyNamePair;
public abstract class PaymentFormCheck extends PaymentForm {
public static final String PAYMENTRULE = MInvoice.PAYMENTRULE_Check;
public PaymentFormCheck(int WindowNo, GridTab mTab) {
super(WindowNo, mTab);
}
public KeyNamePair selectedBankAccount;
public ArrayList<KeyNamePair> getBankAccountList() {
selectedBankAccount = null;
ArrayList<KeyNamePair> list = new ArrayList<KeyNamePair>();
/**
* Load Bank Accounts
*/
String SQL = MRole.getDefault().addAccessSQL(
"SELECT C_BankAccount_ID, ba.Name || ' ' || AccountNo, IsDefault "
+ "FROM C_BankAccount ba"
+ " INNER JOIN C_Bank b ON (ba.C_Bank_ID=b.C_Bank_ID) "
+ "WHERE b.IsActive='Y'",
"ba", MRole.SQL_FULLYQUALIFIED, MRole.SQL_RO);
try
{
PreparedStatement pstmt = DB.prepareStatement(SQL, null);
ResultSet rs = pstmt.executeQuery();
while (rs.next())
{
int key = rs.getInt(1);
String name = rs.getString(2);
KeyNamePair pp = new KeyNamePair(key, name);
list.add(pp);
if (key == m_C_BankAccount_ID)
selectedBankAccount = pp;
if (selectedBankAccount == null && rs.getString(3).equals("Y")) // Default
selectedBankAccount = pp;
}
rs.close();
pstmt.close();
}
catch (SQLException ept)
{
log.log(Level.SEVERE, SQL, ept);
}
return list;
}
public String processMsg = null;
public boolean save(int newC_BankAccount_ID, String routing, String number, String check, BigDecimal amount)
{
processMsg = null;
boolean error = false;
String payTypes = m_Cash_As_Payment ? "KTSDB" : "KTSD";
/***********************
* Changed PaymentRule
*/
if (!PAYMENTRULE.equals(m_PaymentRule))
{
log.fine("Changed PaymentRule: " + m_PaymentRule + " -> " + PAYMENTRULE);
// We had a change in Payment type (e.g. Check to CC)
if (payTypes.indexOf(m_PaymentRule) != -1 && payTypes.indexOf(PAYMENTRULE) != -1 && m_mPaymentOriginal != null)
{
log.fine("Old Payment(1) - " + m_mPaymentOriginal);
m_mPaymentOriginal.setDocAction(DocAction.ACTION_Reverse_Correct);
boolean ok = m_mPaymentOriginal.processIt(DocAction.ACTION_Reverse_Correct);
m_mPaymentOriginal.saveEx();
if (ok)
log.info( "Payment Canecelled - " + m_mPaymentOriginal);
else
{
processMsg = "PaymentNotCancelled " + m_mPaymentOriginal.getDocumentNo();
error = true;
}
m_mPayment.resetNew();
}
// We had a Payment and something else (e.g. Check to Cash)
else if (payTypes.indexOf(m_PaymentRule) != -1 && payTypes.indexOf(PAYMENTRULE) == -1)
{
log.fine("Old Payment(2) - " + m_mPaymentOriginal);
if (m_mPaymentOriginal != null)
{
m_mPaymentOriginal.setDocAction(DocAction.ACTION_Reverse_Correct);
boolean ok = m_mPaymentOriginal.processIt(DocAction.ACTION_Reverse_Correct);
m_mPaymentOriginal.saveEx();
if (ok) // Cancel Payment
{
log.fine("PaymentCancelled " + m_mPayment.getDocumentNo ());
getGridTab().getTableModel().dataSave(true);
m_mPayment.resetNew();
m_mPayment.setAmount(m_C_Currency_ID, m_Amount);
}
else
{
processMsg = "PaymentNotCancelled " + m_mPayment.getDocumentNo();
error = true;
}
}
}
}
// Get Order and optionally Invoice
int C_Order_ID = Env.getContextAsInt(Env.getCtx(), getWindowNo(), "C_Order_ID");
int C_Invoice_ID = Env.getContextAsInt(Env.getCtx(), getWindowNo(), "C_Invoice_ID");
if (C_Invoice_ID == 0 && m_DocStatus.equals("CO"))
C_Invoice_ID = getInvoiceID (C_Order_ID);
// Amount sign negative, if ARC (Credit Memo) or API (AP Invoice)
boolean negateAmt = false;
MInvoice invoice = null;
if (C_Invoice_ID != 0)
{
invoice = new MInvoice (Env.getCtx(), C_Invoice_ID, null);
negateAmt = invoice.isCreditMemo();
}
MOrder order = null;
if (invoice == null && C_Order_ID != 0)
order = new MOrder (Env.getCtx(), C_Order_ID, null);
BigDecimal payAmount = m_Amount;
if (negateAmt)
payAmount = m_Amount.negate();
// Info
log.config("C_Order_ID=" + C_Order_ID + ", C_Invoice_ID=" + C_Invoice_ID + ", NegateAmt=" + negateAmt);
/***********************
* Payments
*/
log.fine("Payment - " + PAYMENTRULE);
// Set Amount
m_mPayment.setAmount(m_C_Currency_ID, payAmount);
m_mPayment.setBankCheck(newC_BankAccount_ID, m_isSOTrx, routing,
number, check);
// Get changes to check amount
m_mPayment.setAmount(m_C_Currency_ID, amount);
m_mPayment.setC_BPartner_ID(m_C_BPartner_ID);
m_mPayment.setC_Invoice_ID(C_Invoice_ID);
if (order != null)
{
m_mPayment.setC_Order_ID(C_Order_ID);
m_needSave = true;
}
m_mPayment.setDateTrx(m_DateAcct);
m_mPayment.setDateAcct(m_DateAcct);
m_mPayment.saveEx();
// Save/Post
if (m_mPayment.get_ID() > 0 && MPayment.DOCSTATUS_Drafted.equals(m_mPayment.getDocStatus()))
{
boolean ok = m_mPayment.processIt(DocAction.ACTION_Complete);
m_mPayment.saveEx();
if (ok)
processMsg = m_mPayment.getDocumentNo();
else
{
processMsg = "PaymentNotCreated";
error = true;
}
}
else
log.fine("NotDraft " + m_mPayment);
/**********************
* Save Values to mTab
*/
log.config("Saving changes");
// Set Payment
if (m_mPayment.getC_Payment_ID() != m_C_Payment_ID)
{
if (m_mPayment.getC_Payment_ID() == 0)
getGridTab().setValue("C_Payment_ID", null);
else
getGridTab().setValue("C_Payment_ID", new Integer(m_mPayment.getC_Payment_ID()));
}
return !error;
}
}

View File

@ -0,0 +1,221 @@
package org.compiere.grid;
import java.math.BigDecimal;
import org.compiere.model.GridTab;
import org.compiere.model.MInvoice;
import org.compiere.model.MOrder;
import org.compiere.model.MPayment;
import org.compiere.process.DocAction;
import org.compiere.util.Env;
import org.compiere.util.ValueNamePair;
public abstract class PaymentFormCreditCard extends PaymentForm {
public static final String PAYMENTRULE = MInvoice.PAYMENTRULE_CreditCard;
public PaymentFormCreditCard(int WindowNo, GridTab mTab) {
super(WindowNo, mTab);
}
public ValueNamePair selectedCreditCard;
public ValueNamePair[] getCreditCardList()
{
selectedCreditCard = null;
ValueNamePair[] ccs = m_mPayment.getCreditCards();
for (int i = 0; i < ccs.length; i++)
{
if (ccs[i].getValue().equals(m_CCType))
selectedCreditCard = ccs[i];
}
return ccs;
}
public String processMsg = null;
public boolean save(String newCCType, String newCCNumber, String newCCExp, BigDecimal newAmount)
{
processMsg = null;
boolean error = false;
String payTypes = m_Cash_As_Payment ? "KTSDB" : "KTSD";
/***********************
* Changed PaymentRule
*/
if (!PAYMENTRULE.equals(m_PaymentRule))
{
log.fine("Changed PaymentRule: " + m_PaymentRule + " -> " + PAYMENTRULE);
// We had a change in Payment type (e.g. Check to CC)
if (payTypes.indexOf(m_PaymentRule) != -1 && payTypes.indexOf(PAYMENTRULE) != -1 && m_mPaymentOriginal != null)
{
log.fine("Old Payment(1) - " + m_mPaymentOriginal);
m_mPaymentOriginal.setDocAction(DocAction.ACTION_Reverse_Correct);
boolean ok = m_mPaymentOriginal.processIt(DocAction.ACTION_Reverse_Correct);
m_mPaymentOriginal.saveEx();
if (ok)
log.info( "Payment Canecelled - " + m_mPaymentOriginal);
else
{
processMsg = "PaymentNotCancelled " + m_mPaymentOriginal.getDocumentNo();
error = true;
}
m_mPayment.resetNew();
}
// We had a Payment and something else (e.g. Check to Cash)
else if (payTypes.indexOf(m_PaymentRule) != -1 && payTypes.indexOf(PAYMENTRULE) == -1)
{
log.fine("Old Payment(2) - " + m_mPaymentOriginal);
if (m_mPaymentOriginal != null)
{
m_mPaymentOriginal.setDocAction(DocAction.ACTION_Reverse_Correct);
boolean ok = m_mPaymentOriginal.processIt(DocAction.ACTION_Reverse_Correct);
m_mPaymentOriginal.saveEx();
if (ok) // Cancel Payment
{
log.fine("PaymentCancelled " + m_mPayment.getDocumentNo ());
getGridTab().getTableModel().dataSave(true);
m_mPayment.resetNew();
m_mPayment.setAmount(m_C_Currency_ID, m_Amount);
}
else
{
processMsg = "PaymentNotCancelled " + m_mPayment.getDocumentNo();
error = true;
}
}
}
}
// Get Order and optionally Invoice
int C_Order_ID = Env.getContextAsInt(Env.getCtx(), getWindowNo(), "C_Order_ID");
int C_Invoice_ID = Env.getContextAsInt(Env.getCtx(), getWindowNo(), "C_Invoice_ID");
if (C_Invoice_ID == 0 && m_DocStatus.equals("CO"))
C_Invoice_ID = getInvoiceID (C_Order_ID);
// Amount sign negative, if ARC (Credit Memo) or API (AP Invoice)
boolean negateAmt = false;
MInvoice invoice = null;
if (C_Invoice_ID != 0)
{
invoice = new MInvoice (Env.getCtx(), C_Invoice_ID, null);
negateAmt = invoice.isCreditMemo();
}
MOrder order = null;
if (invoice == null && C_Order_ID != 0)
order = new MOrder (Env.getCtx(), C_Order_ID, null);
BigDecimal payAmount = m_Amount;
if (negateAmt)
payAmount = m_Amount.negate();
// Info
log.config("C_Order_ID=" + C_Order_ID + ", C_Invoice_ID=" + C_Invoice_ID + ", NegateAmt=" + negateAmt);
/***********************
* Payments
*/
log.fine("Payment - " + PAYMENTRULE);
// Set Amount
m_mPayment.setAmount(m_C_Currency_ID, payAmount);
m_mPayment.setCreditCard(MPayment.TRXTYPE_Sales, newCCType, newCCNumber, "", newCCExp);
// Get changes to credit card amount
m_mPayment.setAmount(m_C_Currency_ID, newAmount);
m_mPayment.setPaymentProcessor();
m_mPayment.setC_BPartner_ID(m_C_BPartner_ID);
m_mPayment.setC_Invoice_ID(C_Invoice_ID);
if (order != null)
{
m_mPayment.setC_Order_ID(C_Order_ID);
m_needSave = true;
}
m_mPayment.setDateTrx(m_DateAcct);
m_mPayment.setDateAcct(m_DateAcct);
m_mPayment.saveEx();
// Save/Post
if (m_mPayment.get_ID() > 0 && MPayment.DOCSTATUS_Drafted.equals(m_mPayment.getDocStatus()))
{
boolean ok = m_mPayment.processIt(DocAction.ACTION_Complete);
m_mPayment.saveEx();
if (ok)
processMsg = m_mPayment.getDocumentNo();
else
{
processMsg = "PaymentNotCreated";
error = true;
}
}
else
log.fine("NotDraft " + m_mPayment);
/**********************
* Save Values to mTab
*/
log.config("Saving changes");
// Set Payment
if (m_mPayment.getC_Payment_ID() != m_C_Payment_ID)
{
if (m_mPayment.getC_Payment_ID() == 0)
getGridTab().setValue("C_Payment_ID", null);
else
getGridTab().setValue("C_Payment_ID", new Integer(m_mPayment.getC_Payment_ID()));
}
return !error;
}
public boolean processOnline(String CCType, String CCNumber, String CCExp)
{
processMsg = null;
boolean error = false;
boolean approved = false;
String info = "";
m_mPayment.setCreditCard(MPayment.TRXTYPE_Sales, CCType,
CCNumber, "", CCExp);
m_mPayment.setAmount(m_C_Currency_ID, m_Amount);
m_mPayment.setPaymentProcessor();
m_mPayment.setC_BPartner_ID(m_C_BPartner_ID);
//
int C_Invoice_ID = Env.getContextAsInt(Env.getCtx(), getWindowNo(), "C_Invoice_ID");
if (C_Invoice_ID == 0 && m_DocStatus.equals("CO"))
{
int C_Order_ID = Env.getContextAsInt(Env.getCtx(), getWindowNo(), "C_Order_ID");
C_Invoice_ID = getInvoiceID (C_Order_ID);
}
m_mPayment.setC_Invoice_ID(C_Invoice_ID);
m_mPayment.setDateTrx(m_DateAcct);
// Set Amount
m_mPayment.setAmount(m_C_Currency_ID, m_Amount);
if (!m_mPayment.save()) {
processMsg = "PaymentNotCreated";
return false;
} else {
approved = m_mPayment.processOnline();
info = m_mPayment.getR_RespMsg() + " (" + m_mPayment.getR_AuthCode()
+ ") ID=" + m_mPayment.getR_PnRef();
m_mPayment.saveEx();
if (approved)
{
boolean ok = m_mPayment.processIt(DocAction.ACTION_Complete);
m_mPayment.saveEx();
if (ok)
processMsg = info + "\n" + m_mPayment.getDocumentNo();
else
{
processMsg = "PaymentNotCreated";
error = true;
}
saveChanges();
}
else
{
processMsg = info;
error = true;
}
}
return !error;
}
}

View File

@ -0,0 +1,12 @@
package org.compiere.grid;
import org.compiere.model.GridTab;
import org.compiere.model.MInvoice;
public abstract class PaymentFormDirectDebit extends PaymentFormDirectDeposit {
public static final String PAYMENTRULE = MInvoice.PAYMENTRULE_DirectDebit;
public PaymentFormDirectDebit(int WindowNo, GridTab mTab) {
super(WindowNo, mTab);
}
}

View File

@ -0,0 +1,125 @@
package org.compiere.grid;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import org.compiere.model.GridTab;
import org.compiere.model.MInvoice;
import org.compiere.process.DocAction;
import org.compiere.util.DB;
import org.compiere.util.KeyNamePair;
public abstract class PaymentFormDirectDeposit extends PaymentForm {
public static final String PAYMENTRULE = MInvoice.PAYMENTRULE_DirectDeposit;
public PaymentFormDirectDeposit(int WindowNo, GridTab mTab) {
super(WindowNo, mTab);
}
public ArrayList<KeyNamePair> getBankAccountList() {
ArrayList<KeyNamePair> list = new ArrayList<KeyNamePair>();
/**
* Load Accounts
*/
String SQL = "SELECT a.C_BP_BankAccount_ID, NVL(b.Name, ' ')||'_'||NVL(a.AccountNo, ' ') AS Acct "
+ "FROM C_BP_BankAccount a"
+ " LEFT OUTER JOIN C_Bank b ON (a.C_Bank_ID=b.C_Bank_ID) "
+ "WHERE C_BPartner_ID=?"
+ "AND a.IsActive='Y' AND a.IsACH='Y'";
try
{
PreparedStatement pstmt = DB.prepareStatement(SQL, null);
pstmt.setInt(1, m_C_BPartner_ID);
ResultSet rs = pstmt.executeQuery();
while (rs.next())
{
int key = rs.getInt(1);
String name = rs.getString(2);
KeyNamePair pp = new KeyNamePair(key, name);
list.add(pp);
}
rs.close();
pstmt.close();
}
catch (SQLException eac)
{
log.log(Level.SEVERE, SQL, eac);
}
return list;
}
public String processMsg;
public boolean save()
{
processMsg = null;
boolean error = false;
String payTypes = m_Cash_As_Payment ? "KTSDB" : "KTSD";
/***********************
* Changed PaymentRule
*/
if (!PAYMENTRULE.equals(m_PaymentRule))
{
log.fine("Changed PaymentRule: " + m_PaymentRule + " -> " + PAYMENTRULE);
// We had a change in Payment type (e.g. Check to CC)
if (payTypes.indexOf(m_PaymentRule) != -1 && payTypes.indexOf(PAYMENTRULE) != -1 && m_mPaymentOriginal != null)
{
log.fine("Old Payment(1) - " + m_mPaymentOriginal);
m_mPaymentOriginal.setDocAction(DocAction.ACTION_Reverse_Correct);
boolean ok = m_mPaymentOriginal.processIt(DocAction.ACTION_Reverse_Correct);
m_mPaymentOriginal.saveEx();
if (ok)
log.info( "Payment Canecelled - " + m_mPaymentOriginal);
else
{
processMsg = "PaymentNotCancelled " + m_mPaymentOriginal.getDocumentNo();
error = true;
}
m_mPayment.resetNew();
}
// We had a Payment and something else (e.g. Check to Cash)
else if (payTypes.indexOf(m_PaymentRule) != -1 && payTypes.indexOf(PAYMENTRULE) == -1)
{
log.fine("Old Payment(2) - " + m_mPaymentOriginal);
if (m_mPaymentOriginal != null)
{
m_mPaymentOriginal.setDocAction(DocAction.ACTION_Reverse_Correct);
boolean ok = m_mPaymentOriginal.processIt(DocAction.ACTION_Reverse_Correct);
m_mPaymentOriginal.saveEx();
if (ok) // Cancel Payment
{
log.fine("PaymentCancelled " + m_mPayment.getDocumentNo ());
getGridTab().getTableModel().dataSave(true);
m_mPayment.resetNew();
m_mPayment.setAmount(m_C_Currency_ID, m_Amount);
}
else
{
processMsg = "PaymentNotCancelled " + m_mPayment.getDocumentNo();
error = true;
}
}
}
}
/**********************
* Save Values to mTab
*/
log.config("Saving changes");
// Set Payment
if (m_mPayment.getC_Payment_ID() != m_C_Payment_ID)
{
if (m_mPayment.getC_Payment_ID() == 0)
getGridTab().setValue("C_Payment_ID", null);
else
getGridTab().setValue("C_Payment_ID", new Integer(m_mPayment.getC_Payment_ID()));
}
return !error;
}
}

View File

@ -0,0 +1,12 @@
package org.compiere.grid;
import org.compiere.model.GridTab;
import org.compiere.model.MInvoice;
public abstract class PaymentFormMixedPOS extends PaymentForm {
public static final String PAYMENTRULE = MInvoice.PAYMENTRULE_MixedPOSPayment;
public PaymentFormMixedPOS(int WindowNo, GridTab mTab) {
super(WindowNo, mTab);
}
}

View File

@ -0,0 +1,69 @@
package org.compiere.grid;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import org.compiere.model.GridTab;
import org.compiere.model.MInvoice;
import org.compiere.model.MRole;
import org.compiere.util.DB;
import org.compiere.util.KeyNamePair;
public abstract class PaymentFormOnCredit extends PaymentForm {
public static final String PAYMENTRULE = MInvoice.PAYMENTRULE_OnCredit;
/** Start Payment Term */
public int m_C_PaymentTerm_ID = 0;
public PaymentFormOnCredit(int WindowNo, GridTab mTab) {
super(WindowNo, mTab);
if (mTab.getValue("C_PaymentTerm_ID") != null)
m_C_PaymentTerm_ID = ((Integer)mTab.getValue("C_PaymentTerm_ID")).intValue();
}
public KeyNamePair selectedPaymentTerm = null;
public ArrayList<KeyNamePair> getPaymentTermList() {
selectedPaymentTerm = null;
ArrayList<KeyNamePair> list = new ArrayList<KeyNamePair>();
/**
* Load Payment Terms
*/
String SQL = MRole.getDefault().addAccessSQL(
"SELECT C_PaymentTerm_ID, Name FROM C_PaymentTerm WHERE IsActive='Y' ORDER BY Name",
"C_PaymentTerm", MRole.SQL_NOTQUALIFIED, MRole.SQL_RO);
try
{
PreparedStatement pstmt = DB.prepareStatement(SQL, null);
ResultSet rs = pstmt.executeQuery();
while (rs.next())
{
int key = rs.getInt(1);
String name = rs.getString(2);
KeyNamePair pp = new KeyNamePair(key, name);
list.add(pp);
if (pp.getKey() == m_C_PaymentTerm_ID)
selectedPaymentTerm = pp;
}
rs.close();
pstmt.close();
}
catch (SQLException ept)
{
log.log(Level.SEVERE, SQL, ept);
}
return list;
}
public boolean save(int newC_PaymentTerm_ID)
{
if (newC_PaymentTerm_ID != m_C_PaymentTerm_ID)
getGridTab().setValue("C_PaymentTerm_ID", new Integer(newC_PaymentTerm_ID));
return true;
}
}