FR [ 2844074 ] Requisition PO Create - more selection fields

https://sourceforge.net/tracker/?func=detail&aid=2844074&group_id=176962&atid=879335
This commit is contained in:
teo_sarca 2009-08-25 07:17:43 +00:00
parent 7a5871cbaa
commit ae955b6ee9
3 changed files with 273 additions and 5 deletions

View File

@ -19,6 +19,7 @@ package org.compiere.process;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.logging.Level;
import org.adempiere.exceptions.NoVendorForProductException;
@ -49,6 +50,8 @@ import org.compiere.util.Msg;
* <li>BF [ 2605888 ] CreatePOfromRequisition creates more PO than needed
* <li>BF [ 2811718 ] Create PO from Requsition without any parameter teminate in NPE
* http://sourceforge.net/tracker/?func=detail&atid=879332&aid=2811718&group_id=176962
* <li>FR [ 2844074 ] Requisition PO Create - more selection fields
* https://sourceforge.net/tracker/?func=detail&aid=2844074&group_id=176962&atid=879335
*/
public class RequisitionPOCreate extends SvrProcess
{
@ -70,6 +73,10 @@ public class RequisitionPOCreate extends SvrProcess
private int p_AD_User_ID = 0;
/** Product */
private int p_M_Product_ID = 0;
/** Product Category */
private int p_M_Product_Category_ID = 0;
/** BPartner Group */
private int p_C_BP_Group_ID = 0;
/** Requisition */
private int p_M_Requisition_ID = 0;
@ -114,6 +121,10 @@ public class RequisitionPOCreate extends SvrProcess
p_AD_User_ID = para[i].getParameterAsInt();
else if (name.equals("M_Product_ID"))
p_M_Product_ID = para[i].getParameterAsInt();
else if (name.equals("M_Product_Category_ID"))
p_M_Product_Category_ID = para[i].getParameterAsInt();
else if (name.equals("C_BP_Group_ID"))
p_C_BP_Group_ID = para[i].getParameterAsInt();
else if (name.equals("M_Requisition_ID"))
p_M_Requisition_ID = para[i].getParameterAsInt();
else if (name.equals("ConsolidateDocument"))
@ -163,21 +174,38 @@ public class RequisitionPOCreate extends SvrProcess
ArrayList<Object> params = new ArrayList<Object>();
StringBuffer whereClause = new StringBuffer("C_OrderLine_ID IS NULL");
if (p_AD_Org_ID != 0)
if (p_AD_Org_ID > 0)
{
whereClause.append(" AND AD_Org_ID=?");
params.add(p_AD_Org_ID);
}
if (p_M_Product_ID != 0)
if (p_M_Product_ID > 0)
{
whereClause.append(" AND M_Product_ID=?");
params.add(p_M_Product_ID);
}
else if (p_M_Product_Category_ID > 0)
{
whereClause.append(" AND EXISTS (SELECT 1 FROM M_Product p WHERE M_RequisitionLine.M_Product_ID=p.M_Product_ID")
.append(" AND p.M_Product_Category_ID=?)");
params.add(p_M_Product_Category_ID);
}
if (p_C_BP_Group_ID > 0)
{
whereClause.append(" AND (")
.append("M_RequisitionLine.C_BPartner_ID IS NULL")
.append(" OR EXISTS (SELECT 1 FROM C_BPartner bp WHERE M_RequisitionLine.C_BPartner_ID=bp.C_BPartner_ID AND bp.C_BP_Group_ID=?)")
.append(")");
params.add(p_C_BP_Group_ID);
}
//
// Requisition Header
whereClause.append(" AND EXISTS (SELECT 1 FROM M_Requisition r WHERE M_RequisitionLine.M_Requisition_ID=r.M_Requisition_ID")
.append(" AND r.DocStatus='CO'");
if (p_M_Warehouse_ID != 0)
.append(" AND r.DocStatus=?");
params.add(MRequisition.DOCSTATUS_Completed);
if (p_M_Warehouse_ID > 0)
{
whereClause.append(" AND r.M_Warehouse_ID=?");
params.add(p_M_Warehouse_ID);
@ -207,7 +235,7 @@ public class RequisitionPOCreate extends SvrProcess
whereClause.append(" AND r.PriorityRule => ?");
params.add(p_PriorityRule);
}
if (p_AD_User_ID != 0)
if (p_AD_User_ID > 0)
{
whereClause.append(" AND r.AD_User_ID=?");
params.add(p_AD_User_ID);
@ -277,6 +305,9 @@ public class RequisitionPOCreate extends SvrProcess
)
{
newLine(rLine);
// No Order Line was produced (vendor was not valid/allowed) => SKIP
if (m_orderLine == null)
return;
}
// Update Order Line
@ -405,6 +436,12 @@ public class RequisitionPOCreate extends SvrProcess
throw new NoVendorForProductException(product.getName());
}
}
if (!isGenerateForVendor(C_BPartner_ID))
{
log.info("Skip for partner "+C_BPartner_ID);
return;
}
// New Order - Different Vendor
if (m_order == null
@ -436,5 +473,26 @@ public class RequisitionPOCreate extends SvrProcess
m_M_AttributeSetInstance_ID = rLine.getM_AttributeSetInstance_ID();
m_orderLine.saveEx();
} // newLine
/**
* Do we need to generate Purchase Orders for given Vendor
* @param C_BPartner_ID
* @return true if it's allowed
*/
private boolean isGenerateForVendor(int C_BPartner_ID)
{
if (p_C_BP_Group_ID <= 0 && m_excludedVendors.contains(C_BPartner_ID))
return false;
//
boolean match = new Query(getCtx(), MBPartner.Table_Name, "C_BPartner_ID=? AND C_BP_Group_ID=?", get_TrxName())
.setParameters(new Object[]{C_BPartner_ID, p_C_BP_Group_ID})
.match();
if (!match)
{
m_excludedVendors.add(C_BPartner_ID);
}
return match;
}
private List<Integer> m_excludedVendors = new ArrayList<Integer>();
} // RequisitionPOCreate

View File

@ -0,0 +1,105 @@
-- 21.08.2009 12:43:06 EEST
-- Requisition PO Create - more selection fields
INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,Updated,IsActive,Created,UpdatedBy,AD_Org_ID,CreatedBy,FieldLength,Name,IsCentrallyMaintained,IsRange,Description,Help,AD_Process_ID,EntityType,ColumnName,IsMandatory,SeqNo,AD_Reference_ID,AD_Element_ID) VALUES (53322,0,TO_DATE('2009-08-21 12:43:05','YYYY-MM-DD HH24:MI:SS'),'Y',TO_DATE('2009-08-21 12:43:05','YYYY-MM-DD HH24:MI:SS'),0,0,0,10,'Product Category','Y','N','Category of a Product','Identifies the category which this product belongs to. Product categories are used for pricing and selection.',337,'D','M_Product_Category_ID','N',90,19,453)
;
-- 21.08.2009 12:43:07 EEST
-- Requisition PO Create - more selection fields
INSERT INTO AD_Process_Para_Trl (AD_Language,AD_Process_Para_ID, Name,Description,Help, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Process_Para_ID, t.Name,t.Description,t.Help, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Process_Para t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Process_Para_ID=53322 AND EXISTS (SELECT * FROM AD_Process_Para_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Process_Para_ID!=t.AD_Process_Para_ID)
;
-- 21.08.2009 12:55:57 EEST
-- Requisition PO Create - more selection fields
INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,Updated,IsActive,Created,UpdatedBy,AD_Org_ID,CreatedBy,FieldLength,Name,IsCentrallyMaintained,IsRange,Description,Help,AD_Process_ID,EntityType,ColumnName,IsMandatory,SeqNo,AD_Reference_ID,AD_Element_ID) VALUES (53323,0,TO_DATE('2009-08-21 12:55:55','YYYY-MM-DD HH24:MI:SS'),'Y',TO_DATE('2009-08-21 12:55:55','YYYY-MM-DD HH24:MI:SS'),0,0,0,10,'Business Partner Group','Y','N','Business Partner Group','The Business Partner Group provides a method of defining defaults to be used for individual Business Partners.',337,'D','C_BP_Group_ID','N',100,30,1383)
;
-- 21.08.2009 12:55:57 EEST
-- Requisition PO Create - more selection fields
INSERT INTO AD_Process_Para_Trl (AD_Language,AD_Process_Para_ID, Name,Description,Help, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Process_Para_ID, t.Name,t.Description,t.Help, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Process_Para t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Process_Para_ID=53323 AND EXISTS (SELECT * FROM AD_Process_Para_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Process_Para_ID!=t.AD_Process_Para_ID)
;
-- 21.08.2009 12:56:22 EEST
-- Requisition PO Create - more selection fields
UPDATE AD_Process_Para SET SeqNo=10,IsActive='Y' WHERE AD_Process_Para_ID=697
;
-- 21.08.2009 12:56:22 EEST
-- Requisition PO Create - more selection fields
UPDATE AD_Process_Para SET SeqNo=20,IsActive='Y' WHERE AD_Process_Para_ID=689
;
-- 21.08.2009 12:56:22 EEST
-- Requisition PO Create - more selection fields
UPDATE AD_Process_Para SET SeqNo=30,IsActive='Y' WHERE AD_Process_Para_ID=690
;
-- 21.08.2009 12:56:23 EEST
-- Requisition PO Create - more selection fields
UPDATE AD_Process_Para SET SeqNo=40,IsActive='Y' WHERE AD_Process_Para_ID=688
;
-- 21.08.2009 12:56:23 EEST
-- Requisition PO Create - more selection fields
UPDATE AD_Process_Para SET SeqNo=50,IsActive='Y' WHERE AD_Process_Para_ID=691
;
-- 21.08.2009 12:56:23 EEST
-- Requisition PO Create - more selection fields
UPDATE AD_Process_Para SET SeqNo=60,IsActive='Y' WHERE AD_Process_Para_ID=692
;
-- 21.08.2009 12:56:23 EEST
-- Requisition PO Create - more selection fields
UPDATE AD_Process_Para SET SeqNo=70,IsActive='Y' WHERE AD_Process_Para_ID=693
;
-- 21.08.2009 12:56:23 EEST
-- Requisition PO Create - more selection fields
UPDATE AD_Process_Para SET SeqNo=80,IsActive='Y' WHERE AD_Process_Para_ID=695
;
-- 21.08.2009 12:56:23 EEST
-- Requisition PO Create - more selection fields
UPDATE AD_Process_Para SET SeqNo=110,IsActive='Y' WHERE AD_Process_Para_ID=694
;
-- 21.08.2009 12:56:37 EEST
-- Requisition PO Create - more selection fields
UPDATE AD_Process_Para SET DefaultValue='Y',Updated=TO_DATE('2009-08-21 12:56:37','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=694
;
-- 21.08.2009 12:56:44 EEST
-- Requisition PO Create - more selection fields
UPDATE AD_Process_Para SET IsMandatory='Y',Updated=TO_DATE('2009-08-21 12:56:44','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=694
;
-- 21.08.2009 12:57:04 EEST
-- Requisition PO Create - more selection fields
UPDATE AD_Process_Para SET DisplayLogic='@M_Product_ID@=0',Updated=TO_DATE('2009-08-21 12:57:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=53322
;
-- 21.08.2009 12:57:13 EEST
-- Requisition PO Create - more selection fields
UPDATE AD_Process_Para SET DisplayLogic='@M_Product_Category_ID@=0',Updated=TO_DATE('2009-08-21 12:57:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=695
;
-- 21.08.2009 12:57:50 EEST
-- Requisition PO Create - more selection fields
UPDATE AD_Process_Para SET DefaultValue='-1',Updated=TO_DATE('2009-08-21 12:57:50','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=695
;
-- 21.08.2009 12:57:53 EEST
-- Requisition PO Create - more selection fields
UPDATE AD_Process_Para SET DefaultValue='-1',Updated=TO_DATE('2009-08-21 12:57:53','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=53322
;
-- 21.08.2009 12:57:59 EEST
-- Requisition PO Create - more selection fields
UPDATE AD_Process_Para SET DefaultValue='-1',Updated=TO_DATE('2009-08-21 12:57:59','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=53323
;
-- 21.08.2009 12:58:16 EEST
-- Requisition PO Create - more selection fields
UPDATE AD_Process_Para SET AD_Reference_ID=19,Updated=TO_DATE('2009-08-21 12:58:16','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=53323
;

View File

@ -0,0 +1,105 @@
-- 21.08.2009 12:43:06 EEST
-- Requisition PO Create - more selection fields
INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,Updated,IsActive,Created,UpdatedBy,AD_Org_ID,CreatedBy,FieldLength,Name,IsCentrallyMaintained,IsRange,Description,Help,AD_Process_ID,EntityType,ColumnName,IsMandatory,SeqNo,AD_Reference_ID,AD_Element_ID) VALUES (53322,0,TO_TIMESTAMP('2009-08-21 12:43:05','YYYY-MM-DD HH24:MI:SS'),'Y',TO_TIMESTAMP('2009-08-21 12:43:05','YYYY-MM-DD HH24:MI:SS'),0,0,0,10,'Product Category','Y','N','Category of a Product','Identifies the category which this product belongs to. Product categories are used for pricing and selection.',337,'D','M_Product_Category_ID','N',90,19,453)
;
-- 21.08.2009 12:43:07 EEST
-- Requisition PO Create - more selection fields
INSERT INTO AD_Process_Para_Trl (AD_Language,AD_Process_Para_ID, Name,Description,Help, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Process_Para_ID, t.Name,t.Description,t.Help, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Process_Para t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Process_Para_ID=53322 AND EXISTS (SELECT * FROM AD_Process_Para_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Process_Para_ID!=t.AD_Process_Para_ID)
;
-- 21.08.2009 12:55:57 EEST
-- Requisition PO Create - more selection fields
INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,Updated,IsActive,Created,UpdatedBy,AD_Org_ID,CreatedBy,FieldLength,Name,IsCentrallyMaintained,IsRange,Description,Help,AD_Process_ID,EntityType,ColumnName,IsMandatory,SeqNo,AD_Reference_ID,AD_Element_ID) VALUES (53323,0,TO_TIMESTAMP('2009-08-21 12:55:55','YYYY-MM-DD HH24:MI:SS'),'Y',TO_TIMESTAMP('2009-08-21 12:55:55','YYYY-MM-DD HH24:MI:SS'),0,0,0,10,'Business Partner Group','Y','N','Business Partner Group','The Business Partner Group provides a method of defining defaults to be used for individual Business Partners.',337,'D','C_BP_Group_ID','N',100,30,1383)
;
-- 21.08.2009 12:55:57 EEST
-- Requisition PO Create - more selection fields
INSERT INTO AD_Process_Para_Trl (AD_Language,AD_Process_Para_ID, Name,Description,Help, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Process_Para_ID, t.Name,t.Description,t.Help, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Process_Para t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Process_Para_ID=53323 AND EXISTS (SELECT * FROM AD_Process_Para_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Process_Para_ID!=t.AD_Process_Para_ID)
;
-- 21.08.2009 12:56:22 EEST
-- Requisition PO Create - more selection fields
UPDATE AD_Process_Para SET SeqNo=10,IsActive='Y' WHERE AD_Process_Para_ID=697
;
-- 21.08.2009 12:56:22 EEST
-- Requisition PO Create - more selection fields
UPDATE AD_Process_Para SET SeqNo=20,IsActive='Y' WHERE AD_Process_Para_ID=689
;
-- 21.08.2009 12:56:22 EEST
-- Requisition PO Create - more selection fields
UPDATE AD_Process_Para SET SeqNo=30,IsActive='Y' WHERE AD_Process_Para_ID=690
;
-- 21.08.2009 12:56:23 EEST
-- Requisition PO Create - more selection fields
UPDATE AD_Process_Para SET SeqNo=40,IsActive='Y' WHERE AD_Process_Para_ID=688
;
-- 21.08.2009 12:56:23 EEST
-- Requisition PO Create - more selection fields
UPDATE AD_Process_Para SET SeqNo=50,IsActive='Y' WHERE AD_Process_Para_ID=691
;
-- 21.08.2009 12:56:23 EEST
-- Requisition PO Create - more selection fields
UPDATE AD_Process_Para SET SeqNo=60,IsActive='Y' WHERE AD_Process_Para_ID=692
;
-- 21.08.2009 12:56:23 EEST
-- Requisition PO Create - more selection fields
UPDATE AD_Process_Para SET SeqNo=70,IsActive='Y' WHERE AD_Process_Para_ID=693
;
-- 21.08.2009 12:56:23 EEST
-- Requisition PO Create - more selection fields
UPDATE AD_Process_Para SET SeqNo=80,IsActive='Y' WHERE AD_Process_Para_ID=695
;
-- 21.08.2009 12:56:23 EEST
-- Requisition PO Create - more selection fields
UPDATE AD_Process_Para SET SeqNo=110,IsActive='Y' WHERE AD_Process_Para_ID=694
;
-- 21.08.2009 12:56:37 EEST
-- Requisition PO Create - more selection fields
UPDATE AD_Process_Para SET DefaultValue='Y',Updated=TO_TIMESTAMP('2009-08-21 12:56:37','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=694
;
-- 21.08.2009 12:56:44 EEST
-- Requisition PO Create - more selection fields
UPDATE AD_Process_Para SET IsMandatory='Y',Updated=TO_TIMESTAMP('2009-08-21 12:56:44','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=694
;
-- 21.08.2009 12:57:04 EEST
-- Requisition PO Create - more selection fields
UPDATE AD_Process_Para SET DisplayLogic='@M_Product_ID@=0',Updated=TO_TIMESTAMP('2009-08-21 12:57:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=53322
;
-- 21.08.2009 12:57:13 EEST
-- Requisition PO Create - more selection fields
UPDATE AD_Process_Para SET DisplayLogic='@M_Product_Category_ID@=0',Updated=TO_TIMESTAMP('2009-08-21 12:57:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=695
;
-- 21.08.2009 12:57:50 EEST
-- Requisition PO Create - more selection fields
UPDATE AD_Process_Para SET DefaultValue='-1',Updated=TO_TIMESTAMP('2009-08-21 12:57:50','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=695
;
-- 21.08.2009 12:57:53 EEST
-- Requisition PO Create - more selection fields
UPDATE AD_Process_Para SET DefaultValue='-1',Updated=TO_TIMESTAMP('2009-08-21 12:57:53','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=53322
;
-- 21.08.2009 12:57:59 EEST
-- Requisition PO Create - more selection fields
UPDATE AD_Process_Para SET DefaultValue='-1',Updated=TO_TIMESTAMP('2009-08-21 12:57:59','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=53323
;
-- 21.08.2009 12:58:16 EEST
-- Requisition PO Create - more selection fields
UPDATE AD_Process_Para SET AD_Reference_ID=19,Updated=TO_TIMESTAMP('2009-08-21 12:58:16','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=53323
;