IDEMPIERE-1866 Via web services is not possible to send DateTime for Process

This commit is contained in:
Carlos Ruiz 2014-07-16 18:24:22 -05:00
parent dc9f9ef963
commit 4dad044891
2 changed files with 63 additions and 71 deletions

View File

@ -15,7 +15,6 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Properties;
import java.util.logging.Level;
@ -38,8 +37,6 @@ import org.compiere.util.Login;
public class CompiereService {
private static CLogger log = CLogger.getCLogger(CompiereService.class);
public final static String datePattern = "dd-MM-yyyy";
private Properties m_ctx;
@ -56,32 +53,17 @@ public class CompiereService {
/** Localized Date format */
public SimpleDateFormat dateFormat = null;
/** JDBC Date format */
public SimpleDateFormat dateFormatJDBC = null;
/** Localized Timestamp format */
public SimpleDateFormat dateTimeFormat = null;
/** JDBC Timestamp format */
public SimpleDateFormat dateTimeFormatJDBC = null;
/** Localized Time format */
public SimpleDateFormat timeFormat = null;
/** JDBC Time format */
public SimpleDateFormat timeFormatJDBC = null;
/** Localized Amount format */
public DecimalFormat amountFormat = null;
/** Localized Integer format */
public DecimalFormat integerFormat = null;
/** Localized Number format */
public DecimalFormat numberFormat = null;
/** Localized Quantity format */
public DecimalFormat quantityFormat = null;
/** Localized Date format */
public SimpleDateFormat modelDateFormat = null;
/** Localized Timestamp format */
public SimpleDateFormat modelDateTimeFormat = null;
/** Localized Amount format */
public DecimalFormat modelAmountFormat = null;
/** Localized Integer format */
public DecimalFormat modelIntegerFormat = null;
/** Localized Number format */
public DecimalFormat modelNumberFormat = null;
/** Localized Quantity format */
public DecimalFormat modelQuantityFormat = null;
private Language m_language;
public final String dateFormatOnlyForCtx = "yyyy-MM-dd";
@ -137,17 +119,12 @@ public class CompiereService {
Env.setContext( m_ctx, "#AD_Language", "en_US" );
m_language = Language.getLanguage("en_US");
// These variables are needed for ADClient.exe
Language m_lang2 = Language.getLanguage("pl_PL");
dateFormat = new SimpleDateFormat( datePattern );
dateTimeFormat = new SimpleDateFormat( datePattern );
amountFormat = DisplayType.getNumberFormat(DisplayType.Amount, m_lang2);
integerFormat = DisplayType.getNumberFormat(DisplayType.Integer, m_lang2);
numberFormat = DisplayType.getNumberFormat(DisplayType.Number, m_lang2);
quantityFormat = DisplayType.getNumberFormat(DisplayType.Quantity, m_lang2);
dateFormat = DisplayType.getDateFormat(DisplayType.Date, m_language);
dateTimeFormat = DisplayType.getDateFormat(DisplayType.DateTime, m_language);
timeFormat = DisplayType.getDateFormat(DisplayType.Time, m_language);
dateFormatJDBC = DisplayType.getDateFormat_JDBC();
dateTimeFormatJDBC = DisplayType.getTimestampFormat_Default();
timeFormatJDBC = DisplayType.getTimeFormat_Default();
}
}
@ -279,14 +256,13 @@ public class CompiereService {
Env.setContext( m_ctx, "#AD_Language", Lang);
m_language = Language.getLanguage(Lang);
Env.verifyLanguage( getCtx(), m_language );
modelDateFormat = new SimpleDateFormat( datePattern );
modelDateTimeFormat = new SimpleDateFormat( datePattern );
modelAmountFormat = DisplayType.getNumberFormat(DisplayType.Amount, m_language);
modelIntegerFormat = DisplayType.getNumberFormat(DisplayType.Integer, m_language);
modelNumberFormat = DisplayType.getNumberFormat(DisplayType.Number, m_language);
modelQuantityFormat = DisplayType.getNumberFormat(DisplayType.Quantity, m_language);
dateFormat = DisplayType.getDateFormat(DisplayType.Date, m_language);
dateTimeFormat = DisplayType.getDateFormat(DisplayType.DateTime, m_language);
timeFormat = DisplayType.getDateFormat(DisplayType.Time, m_language);
dateFormatJDBC = DisplayType.getDateFormat_JDBC();
dateTimeFormatJDBC = DisplayType.getTimestampFormat_Default();
timeFormatJDBC = DisplayType.getTimeFormat_Default();
// Set Date
Timestamp ts = new Timestamp(System.currentTimeMillis());

View File

@ -4,6 +4,7 @@ import java.io.ByteArrayOutputStream;
import java.io.CharArrayWriter;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.text.ParseException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
@ -545,35 +546,50 @@ public class Process {
else if (DisplayType.isDate(displayType))
{
java.util.Date d;
if (displayType == DisplayType.DateTime)
d = m_cs.dateTimeFormat.parse(value.toString());
else
d = m_cs.dateFormat.parse(value.toString());
Timestamp ts = null;
ts = new Timestamp(d.getTime());
iPara.setP_Date(ts);
if (pPara.isRange())
{
if (displayType == DisplayType.DateTime)
d = m_cs.dateTimeFormat.parse(valueString2);
else
{
if (valueString2 == null || valueString2.length() == 0)
d = new java.util.Date();
else
d = m_cs.dateFormat.parse(valueString2);
if (value.toString().length() > 0) {
if (displayType == DisplayType.DateTime) {
try {
d = m_cs.dateTimeFormatJDBC.parse(value.toString());
} catch (ParseException e) {
d = m_cs.dateTimeFormat.parse(value.toString());
}
} else if (displayType == DisplayType.Time) {
try {
d = m_cs.timeFormatJDBC.parse(value.toString());
} catch (ParseException e) {
d = m_cs.timeFormat.parse(value.toString());
}
} else {
try {
d = m_cs.dateFormatJDBC.parse(value.toString());
} catch (ParseException e) {
d = m_cs.dateFormat.parse(value.toString());
}
}
Timestamp ts = new Timestamp(d.getTime());
iPara.setP_Date(ts);
if (log.isLoggable(Level.FINE)) log.fine("fillParameter - " + key
+ " = " + valueString + " (=" + ts + "=)");
}
if (pPara.isRange())
{
if (valueString2 != null && valueString2.length() > 0) {
if (displayType == DisplayType.DateTime)
d = m_cs.dateTimeFormat.parse(valueString2.toString());
else if (displayType == DisplayType.Time)
d = m_cs.timeFormat.parse(valueString2.toString());
else
d = m_cs.dateFormat.parse(valueString2.toString());
Timestamp ts = new Timestamp(d.getTime());
iPara.setP_Date_To(ts);
if (log.isLoggable(Level.FINE)) log.fine("fillParameterTo - " + key
+ " = " + valueString + " (=" + ts + "=)");
}
ts = new Timestamp(d.getTime());
iPara.setP_Date_To(ts );
}
if (log.isLoggable(Level.FINE)) log.fine("fillParameter - " + key
+ " = " + valueString + " (=" + ts + "=)");
}
else if (DisplayType.YesNo == pPara.getAD_Reference_ID())
{