* more robust support for ad_client_id and ad_org_id.
* fixed bug for official id and uuid support.
This commit is contained in:
parent
1e4cdbf1eb
commit
ffcbd20aaa
|
@ -7,6 +7,8 @@ import java.util.Properties;
|
||||||
import javax.xml.transform.sax.TransformerHandler;
|
import javax.xml.transform.sax.TransformerHandler;
|
||||||
|
|
||||||
import org.adempiere.exceptions.AdempiereException;
|
import org.adempiere.exceptions.AdempiereException;
|
||||||
|
import org.compiere.model.I_AD_Client;
|
||||||
|
import org.compiere.model.I_AD_Org;
|
||||||
import org.compiere.model.MTable;
|
import org.compiere.model.MTable;
|
||||||
import org.compiere.model.PO;
|
import org.compiere.model.PO;
|
||||||
import org.compiere.model.POInfo;
|
import org.compiere.model.POInfo;
|
||||||
|
@ -190,8 +192,10 @@ public class PoExporter {
|
||||||
{
|
{
|
||||||
if (!preservedOrg)
|
if (!preservedOrg)
|
||||||
addString("AD_Org_ID", "@AD_Org_ID@", new AttributesImpl());
|
addString("AD_Org_ID", "@AD_Org_ID@", new AttributesImpl());
|
||||||
else
|
else {
|
||||||
addTableReference("AD_Org", "Value", new AttributesImpl());
|
addTableReference(I_AD_Client.Table_Name, I_AD_Client.COLUMNNAME_Value, new AttributesImpl());
|
||||||
|
addTableReference(I_AD_Org.Table_Name, I_AD_Org.COLUMNNAME_Value, new AttributesImpl());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -140,52 +140,24 @@ public class PoFiller{
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
String value = e.contents.toString();
|
String value = e.contents.toString();
|
||||||
String reference = e.attributes.getValue("reference");
|
|
||||||
String referenceKey = e.attributes.getValue("reference-key");
|
|
||||||
String columnName = qName;
|
String columnName = qName;
|
||||||
if (value != null && value.trim().length() > 0)
|
if (value != null && value.trim().length() > 0) {
|
||||||
{
|
int id = ReferenceUtils.resolveReference(ctx, e);
|
||||||
if ("table".equals(reference))
|
if (columnName.equals("AD_Client_ID") && id > 0) {
|
||||||
{
|
if (id != Env.getAD_Client_ID(ctx)) {
|
||||||
String[] names = referenceKey.split("[.]");
|
|
||||||
if (names.length < 2)
|
|
||||||
return 0;
|
|
||||||
if (po.get_ColumnIndex(columnName) >= 0) {
|
|
||||||
String tableName = names[0];
|
|
||||||
String searchColumn = names[1];
|
|
||||||
|
|
||||||
int id = handler.findIdByColumn(po.getCtx(), tableName, searchColumn, value.trim());
|
|
||||||
if (id > 0) {
|
|
||||||
po.set_ValueOfColumn(columnName, id);
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
return -1;
|
return -1;
|
||||||
} else {
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ("id".equals(reference))
|
if (po.get_ColumnIndex(columnName) >= 0) {
|
||||||
{
|
|
||||||
int id = Integer.parseInt(value);
|
|
||||||
po.set_ValueOfColumn(e.getElementValue(), id);
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
else if ("uuid".equals(reference))
|
|
||||||
{
|
|
||||||
int id = handler.findIdByColumn(po.getCtx(), referenceKey, referenceKey + "_UU", value.trim());
|
|
||||||
if (id > 0) {
|
if (id > 0) {
|
||||||
po.set_ValueOfColumn(columnName, id);
|
po.set_ValueOfColumn(columnName, id);
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
else
|
} else {
|
||||||
{
|
|
||||||
throw new IllegalArgumentException("Unknown table reference type="+reference);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -205,8 +177,10 @@ public class PoFiller{
|
||||||
po.setAD_Org_ID(0);
|
po.setAD_Org_ID(0);
|
||||||
else if (sAD_Org_ID != null && sAD_Org_ID.equals("@AD_Org_ID@"))
|
else if (sAD_Org_ID != null && sAD_Org_ID.equals("@AD_Org_ID@"))
|
||||||
po.setAD_Org_ID(Env.getAD_Org_ID(ctx));
|
po.setAD_Org_ID(Env.getAD_Org_ID(ctx));
|
||||||
else
|
else {
|
||||||
setTableReference("AD_Org.Value");
|
if (setTableReference("AD_Client_ID") >= 0)
|
||||||
|
setTableReference("AD_Org_ID");
|
||||||
|
}
|
||||||
|
|
||||||
for(String qName : element.properties.keySet()) {
|
for(String qName : element.properties.keySet()) {
|
||||||
if (excludes != null ){
|
if (excludes != null ){
|
||||||
|
|
|
@ -110,6 +110,18 @@ public class GenericPOElementHandler extends AbstractElementHandler implements I
|
||||||
}
|
}
|
||||||
PoFiller filler = new PoFiller(ctx, po, element, this);
|
PoFiller filler = new PoFiller(ctx, po, element, this);
|
||||||
List<String> excludes = defaultExcludeList(tableName);
|
List<String> excludes = defaultExcludeList(tableName);
|
||||||
|
if (po.get_ID() == 0) {
|
||||||
|
Element idElement = element.properties.get(tableName + "_ID");
|
||||||
|
if (idElement != null && idElement.contents != null && idElement.contents.length() > 0) {
|
||||||
|
int id = 0;
|
||||||
|
try {
|
||||||
|
id = Integer.parseInt(idElement.contents.toString());
|
||||||
|
if (id > 0 && id <= PackOut.MAX_OFFICIAL_ID) {
|
||||||
|
po.set_ValueOfColumn(tableName + "_ID", id);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
List<String> notfounds = filler.autoFill(excludes);
|
List<String> notfounds = filler.autoFill(excludes);
|
||||||
if (notfounds.size() > 0) {
|
if (notfounds.size() > 0) {
|
||||||
element.defer = true;
|
element.defer = true;
|
||||||
|
|
Loading…
Reference in New Issue