You are on page 1of 10

// *********(P061a) Populate Contract LiveCycle ID *****************

import com.sap.odp.api.doccommon.masterdata.ValueListValueIBeanHomeIfc;
import com.sap.odp.api.doccommon.masterdata.ValueListValueIBeanIfc;
import com.sap.odp.api.doccommon.masterdata.ValueListTypeIBeanHomeIfc;
import com.sap.odp.api.doccommon.masterdata.ValueListTypeIBeanIfc;
debug = true;
int i = 0;
log = Logger.createLogMessage(session);
logInfo(message) {
if (debug) {
i++;
log.setLogMessage("P061a " + i + " " + message);
Logger.info(log);
}
}
logError(message) {
if (debug) {
log.setLogMessage("P061a " + message);
Logger.error(log);
}
}
/*
Si ECB_REL_CONTR esta vacio pero ECB_LIVECYCLE esta lleno no sacar el ecb.err_ms
g_relevant_contract_required
*/
//We delare an exception to throw if needed
ae = new ApplicationException(session);
int previousAgreements(docu, numAgreements) {
docLinkColl = docu.getDocumentLinkList();
if (docLinkColl.size() > 0)
{
docLinkIter = docLinkColl.iterator();
//logInfo("Num agreement (recursive): " + numAgreements);
havePrevious = false;
for (docLink : docLinkIter)
{
docObjDefRef = docLink.getLinkDefinitionObjRef();
subagreementDefHome = IBeanHomeLocator.lookup(session,do
cObjDefRef);
subAgreementDef = subagreementDefHome.find(docObjDefRef)
;
logInfo("subAgreementDef: " + subAgreementDef);
relation = subAgreementDef.getDisplayName();
logInfo("relation: " + relation);
if ("Previous Master Agreement".equals(relation))
{
havePrevious = true;
docObjRef = docLink.getLinkDocObjRef();
subagreementHome = IBeanHomeLocator.lookup(sessi
on,docObjRef);
subAgreement = subagreementHome.findForEdit(docO
bjRef);
}
}
if (havePrevious)
{
//logInfo("Id root: " + idRoot + ". Id subagreement: " +
subAgreement.getDocumentId());
// If the ID is the same as root
if (subAgreement.getDocumentId().equals(idRoot))
{
return -1;
}
//logInfo("Contratct liveCycle (recursive): " + subAgree
ment.getExtensionField("ECB_LIVECYCLE").get().getDisplayName());
// If Previous Master Agreement, Contract LiveCycle = Ex
tension or amendment
if ("B".equals(subAgreement.getExtensionField("ECB_LIVEC
YCLE").get().getDisplayName()) ||
("C".equals(subAgreement.getExtensionField("ECB_LIVECYCL
E").get().getDisplayName())))
{
return previousAgreements(subAgreement, numAgree
ments + 1);
}
// If in Previous Master Agreement, Contract LiveCycle =
Initial
if ("A".equals(subAgreement.getExtensionField("ECB_LIVEC
YCLE").get().getDisplayName()))
{
initialProcSub = subAgreement.getExtensionField(
"ECB_INIT_PROC").get();
logInfo("initialProc: " + initialProc + ". initi
alProcSub: " + initialProcSub);
if (!(initialProc.equals(initialProcSub)))
{
ae.chainAtEnd(doc.createApplicationExcep
tion("ECB_INIT_PROC","ecb.err_msg_ini_proc_ma_not_match_ini_proc_ini_ma"));
}
numAgreementsTot = numAgreements + 1;
isInitial = "Y";
if (!(hasValue(subAgreement.getDocumentId())))
{
//logInfo(subAgreement.getDisplayName()
+ " with no subAgreement.getDocumentId");
}
else
{
idInitial = subAgreement.getDocumentId()
;
}
return numAgreementsTot;
}
}
else
{
if ("A".equals(docu.getExtensionField("ECB_LIVECYCLE").g
et().getDisplayName()))
{
isInitial = "Y";
idInitial = docu.getDocumentId();
numAgreementsTot = numAgreements;
return numAgreementsTot;
}
}
}
else
{
isInitial = "Y";
idInitial = docu.getDocumentId();
numAgreementsTot = numAgreements;
return numAgreementsTot;
}
}
// logInfo("***Populate contract Live Cycle ID - starts***");
logInfo("JUAN LARA ALCALDE displayname: " + doc );

// INI MRR 25.11.13
// ProcApplied = doc.getExtensionField("ECB_PROC_APPLIED").get().getDisplayName(
);
// logInfo("Procedure Applied: " + ProcApplied);
// if ("G".equals(ProcApplied))
//G Contract Extension
// {
// valueTypeHome = IBeanHomeLocator.lookup(session, ValueListTypeIBeanHomeI
fc.sHOME_NAME);
// valueTypeBean = valueTypeHome.findUniqueByType(1030);
// valoresIt = valueTypeBean.getCollnValueListValue().iterator();
// for (valores: valoresIt) {
// logInfo("Valor " + valores);}
// valueBean = valueTypeBean.getCollnValueListValue().get("B");
// doc.getExtensionField("ECB_LIVECYCLE").set(valueBean.getLocalizedObjectR
eference());
// }
// if ("H".equals(ProcApplied))
//H Contract Amendment
// {
// valueTypeHome = IBeanHomeLocator.lookup(session, ValueListTypeIBeanHomeI
fc.sHOME_NAME);
// valueTypeBean = valueTypeHome.findUniqueByType(1030);
// valoresIt = valueTypeBean.getCollnValueListValue().iterator();
// for (valores: valoresIt) {
// logInfo("Valor " + valores);}
// valueBean = valueTypeBean.getCollnValueListValue().get("C");
// doc.getExtensionField("ECB_LIVECYCLE").set(valueBean.getLocalizedObjectR
eference());
// }
// END MRR 25.11.13
automatic = doc.getExtensionField("ECB_LIVECYCLE_AUT_POPUL").get();
//logInfo("Automatic: " + automatic);
if (automatic)
{
thisObjRef = doc.getObjectReference();
docHome = IBeanHomeLocator.lookup(session,thisObjRef);
isInitial = "N";
// If Contract Lifecycle = Extension or Amendment
if ("B".equals(doc.getExtensionField("ECB_LIVECYCLE").get().getDisplayNa
me()) ||
("C".equals(doc.getExtensionField("ECB_LIVECYCLE").get().getDisplayName(
))))
{
// Each time the script is executed...
// Extension of Initial Procurement = 00
doc.getExtensionField("ECB_EXT_INIT").set("00");
// Extension of Relevant Contract = 00
doc.getExtensionField("ECB_EXT_REL_CONTR").set("00");
// Check in document link table if there is one and only one Pre
vious Master Agreement
numAgreements = 0;
docLinkColl = doc.getDocumentLinkList();
docLinkIter = docLinkColl.iterator();
for (docLink : docLinkIter)
{
docObjDefRef = docLink.getLinkDefinitionObjRef();
subagreementDefHome = IBeanHomeLocator.lookup(session,do
cObjDefRef);
subAgreementDef = subagreementDefHome.find(docObjDefRef)
;
// logInfo("Relationship: " + subAgreementDef.getDisplay
Name());
relation = subAgreementDef.getDisplayName();
if ("Previous Master Agreement".equals(relation))
{
numAgreements = numAgreements + 1;
}
}
//logInfo("Num Agreements: " + numAgreements);
// In case there is not only one, system will show error message
if (numAgreements > 1 || numAgreements < 1)
{
ae.chainAtEnd(doc.createApplicationException("DOCUMENT_L
INKS","ecb.err_msg_extensions_amendments_should_be_linked_master_agreement"));
}
else
{
// Check Previous Master Agreement until it reaches the
Initial Master Agreement
numAgreementsTot = 0;
idInitial = "";
idRoot = doc.getDocumentId();
initialProc = doc.getExtensionField("ECB_INIT_PROC").get
();
logInfo("idRoot " + idRoot + " - initialProc " + initial
Proc);
numAgreements = previousAgreements(doc, 0);
//logInfo("Num Agreements after recursive: " + numAgreem
ents + " / " + numAgreementsTot);
//logInfo("Is initial?: " + isInitial + " - " + idInitia
l);
if (numAgreementsTot < 0)
{
ae.chainAtEnd(doc.createApplicationException("DO
CUMENT_LINKS","ecb.err_msg_infinite_loop_reached_extension number"));
}
if ("Y".equals(isInitial))
{
doc.getExtensionField("ECB_REL_CONTR").set(idIni
tial);
if (numAgreementsTot < 10)
{
extInitialProcSub = "0" + String.valueOf
(numAgreementsTot);
}
else
{
extInitialProcSub = String.valueOf(numAg
reementsTot);
}
doc.getExtensionField("ECB_EXT_REL_CONTR").set(e
xtInitialProcSub);
}
// Add total to current Extension of initial Procurement
number.
extInitialProcSub = doc.getExtensionField("ECB_EXT_INIT"
).get();
//logInfo("extInitialProcSub a: " + extInitialProcSub);
extInitialProcSubInt = Integer.parseInt(extInitialProcSu
b) + numAgreementsTot;
if (extInitialProcSubInt < 10)
{
extInitialProcSub = "0" + String.valueOf(extInit
ialProcSubInt);
}
else
{
extInitialProcSub = String.valueOf(extInitialPro
cSubInt);
}
//logInfo("extInitialProcSub b: " + extInitialProcSub);
doc.getExtensionField("ECB_EXT_INIT").set(extInitialProc
Sub);
}
}
// If Contract Lifecycle = Initial
if ("A".equals(doc.getExtensionField("ECB_LIVECYCLE").get().getDisplayNa
me()))
{
// Extension of Initial Procurement = 00
doc.getExtensionField("ECB_EXT_INIT").set("00");
// Relevant Contract = Current Master Agreement ID
agreementID = doc.getDocumentId(); // Current Master Agreement I
D
//logInfo("Agreement ID " + agreementID);
doc.getExtensionField("ECB_REL_CONTR").set(agreementID);
// Extension of Relevant Contract = 00
doc.getExtensionField("ECB_EXT_REL_CONTR").set("00");
}
// Script will populate Contract LiveCycle ID
// AAAAAAAAAA/BB/CC-DDDDDDDDDD/EE
// A: Initial Procurement
// B: Lot
// C: Extension of Initial Procurement (0 on the left in case <10)
// D: Relevant Contract
// E: Extension of Relevant Contract (0 on the left in case <10)
//Get LiveCycle Id
lifecycle = doc.getExtensionField("ECB_ID_LIVECYCLE").get();
setOldLiveCycle = false;
a = "";
if (hasValue(doc.getExtensionField("ECB_INIT_PROC").get()))
{
initProcRef = doc.getExtensionField("ECB_INIT_PROC").get(); // R
eturn the object reference
initProcHome = IBeanHomeLocator.lookup(session,initProcRef);
try{
a = initProcHome.find(initProcRef).getDocumentId();
}
catch (ApplicationException e){
logInfo("e " + e.getClass() + ". " + e.getMessage());
ae.chainAtEnd(doc.createApplicationException("ECB_INIT_P
ROC","ecb.err_msg_permissionDenied"));
setOldLiveCycle = true;
}
}
b = "";
if (hasValue(doc.getExtensionField("ECB_LOT").get().getDisplayName()))
{
b = doc.getExtensionField("ECB_LOT").get().getDisplayName(); //V
alue list value
}
//logInfo("Init proc ID + Lot " + a + " - " + b);
c = "";
if (hasValue(doc.getExtensionField("ECB_EXT_INIT").get()))
{
c = doc.getExtensionField("ECB_EXT_INIT").get();
}
d = doc.getExtensionField("ECB_REL_CONTR").get();
if (!(hasValue(d)))
{
ae.chainAtEnd(doc.createApplicationException("ECB_REL_CONTR","ec
b.err_msg_relevant_contract_required"));
}
else
{
//logInfo("Ext init + Rel cont " + c + " " + d);
e = doc.getExtensionField("ECB_EXT_REL_CONTR").get();
if ("N".equals(isInitial))
{
if (Integer.parseInt(e) < 10 && (!(Integer.parseInt(e) =
= 00)))
{
e = "0" + e;
}
}
abcde = a + "/" + b + "/" + c + "-" + d + "/" + e;
//logInfo("LiveCycle Id " + abcde);
if (setOldLiveCycle){
doc.getExtensionField("ECB_ID_LIVECYCLE").set(lifecycle)
;
}
else{
doc.getExtensionField("ECB_ID_LIVECYCLE").set(abcde);
//logInfo("LiveCycle Id post save " + doc.getExtensionFi
eld("ECB_ID_LIVECYCLE").get());
}
}
}
//logInfo("ECB_SPECIFIC_FA: " + doc.getExtensionField("ECB_SPECIFIC_FA").get() +
" ECB_FRAMEWORK_AGR: " + doc.getExtensionField("ECB_FRAMEWORK_AGR").get());
if (doc.getExtensionField("ECB_SPECIFIC_FA").get() && (!doc.getExtensionField("E
CB_FRAMEWORK_AGR").get()))
{
ae.chainAtEnd(doc.createApplicationException("ECB_SPECIFIC_FA","ecb.err_
msg_only_framework_agreements_can_be_flagged_as_specific_framework_agreement"));
}
if (ae.getChain() != null){
//logInfo("Message in P061a");
throw ae.getChain();
}
else{
publish = false;
publish = doc.getExtensionField("ECB_PUBLISH").get();
//logInfo("publish? " + publish);
if (publish){
message = "";
myContractRef = doc.getObjectReference();
myContractHome = IBeanHomeLocator.lookup(session, myContractRef)
;
//contract = myContractHome.find(myContractRef);
//myContractHome.upgradeToEdit(doc);
doc.getExtensionField("ECB_PUBLISH").set(false);
logInfo("Publishing contract " + doc.getDocumentId() + " - " +
doc.getDisplayName() + " in ERP");
try{
myContractHome.publishToERP(doc);
}
catch (ApplicationException e1){
logInfo("e1 " + e1.getClass() + ". " + e1.getMessage());
message = e1.getMessage();
throw new ApplicationException(message);
}
catch (DatabaseException e2){
logInfo("e2 " + e2.getClass() + ". " + e2.getMessage());
message = e2.getMessage();
throw new DatabaseException(message);
}
}
}
master_agreement_line = doc.getLineItems();
logInfo("JLA duplicate master_template: " + master_agree
ment_line );
for (int i = 0 ; i < master_agreement_line.size() ; i++)
{
newMember_ma = master_agreement_line.get(i);
logInfo("JLA LINE ITEM "+ size + "info" + newMember_ma + "display name : " + n
ewMember_ma.getFieldMetadata("DISPLAY_NAME").get(newMember_ma) + "action code :
" + newMember_ma.getFieldMetadata("ACTION_CODE").get(newMember_ma) + "parent :
" + newMember_ma.getFieldMetadata("PARENT").get(newMember_ma) + "line item numbe
r: " + newMember_ma.getFieldMetadata("LINE_ITEM_NUMBER").get(newMember_ma) + "li
ne item number comp: " + newMember_ma.getFieldMetadata("LINE_ITEM_NUMBER_COMP")
.get(newMember_ma) + "part number: " + newMember_ma.getFieldMetadata("PART_NUMB
ER").get(newMember_ma) + "include part number : " +newMember_ma.getFieldMetada
ta("INCLUDE_PART_NUMBER").get(newMember_ma) + "Document Description: " +newMemb
er_ma.getFieldMetadata("DOCUMENT_DESCRIPTION").get(newMember_ma) + "Price : " +
newMember_ma.getFieldMetadata("PRICE").get(newMember_ma) +
"Material : " + newMember_ma.getFieldMetadata("MATERIAL").get(n
ewMember_ma) +
"Location : " + newMember_ma.getFieldMetadata("LOCATION").get(n
ewMember_ma) +
"internal cat: " + newMember_ma.getFieldMetadata("INTERNAL_CAT")
.get(newMember_ma) +
"external cat: " + newMember_ma.getFieldMetadata("EXTERNAL_CAT")
.get(newMember_ma) +
"plant : " + newMember_ma.getFieldMetadata("PLANT").get(newMembe
r_ma) +
"quantity : " + newMember_ma.getFieldMetadata("QUANTITY").get(n
ewMember_ma) +
"created from da : " + newMember_ma.getFieldMetadata("CREATED_FR
OM_DA").get(newMember_ma) +
"display group : " + newMember_ma.getFieldMetadata("DISPLAY_GRO
UP").get(newMember_ma) +
"delivery address name : " + newMember_ma.getFieldMetadata("DLVR
Y_ADDR_NAME").get(newMember_ma) +
"decline addres name 1: " + newMember_ma.getFieldMetadata("DLVRY
_ADDR_ADDR1").get(newMember_ma) +
"delivery address district: " + newMember_ma.getFieldMetadata("D
LVRY_ADDR_DISTRICT").get(newMember_ma) +
"delivery address zip code : " + newMember_ma.getFieldMetadata(
"DLVRY_ADDR_ZIP_CODE").get(newMember_ma) +
"delivery address city : " + newMember_ma.getFieldMetadata("DLV
RY_ADDR_CITY").get(newMember_ma) +
"delivery address region: " + newMember_ma.getFieldMetadata("DLV
Y_ADDR_REGION").get(newMember_ma) +
"from erp : " + newMember_ma.getFieldMetadata("FROM_ERP").get(n
ewMember_ma) +
"line item type enum : " + newMember_ma.getFieldMetadata("LINE_
ITEM_TYPE_ENUM").get(newMember_ma) +
"is local item : " + newMember_ma.getFieldMetadata("IS_LOCAL_ITE
M").get(newMember_ma) +
"delivery terms : " + newMember_ma.getFieldMetadata("DELIVERY_T
ERMS").get(newMember_ma) +
"awarded incoterm location : " + newMember_ma.getFieldMetadata("
AWARDED_INCOTERM_LOCATION").get(newMember_ma) +
"vendor part num: " + newMember_ma.getFieldMetadata("VENDOR_PART
_NUM").get(newMember_ma) +
"up begin: " + newMember_ma.getFieldMetadata("UP_BEGIN").get(new
Member_ma) +
"up end : " + newMember_ma.getFieldMetadata("UP_END").get(newMem
ber_ma) +
"list up : " + newMember_ma.getFieldMetadata("LIST_UP").get(new
Member_ma) +
"order lead : " + newMember_ma.getFieldMetadata("ORDER_LEAD").g
et(newMember_ma) +
"delivery lead : " + newMember_ma.getFieldMetadata("DELIVERY_LE
AD").get(newMember_ma) +
"program lead : " + newMember_ma.getFieldMetadata("PROGRAM_LEAD
").get(newMember_ma) +
"quantiy min : " + newMember_ma.getFieldMetadata("QUANTITY_MIN"
).get(newMember_ma) +
"min order qty : " + newMember_ma.getFieldMetadata("MIN_ORDER_QT
Y").get(newMember_ma) +
"total actual qty : " + newMember_ma.getFieldMetadata("TOTAL_AC
TUAL_QTY").get(newMember_ma) +
"total actual spend : " + newMember_ma.getFieldMetadata("TOTAL_A
CTUAL_SPEND").get(newMember_ma) +
"forecast qty : " + newMember_ma.getFieldMetadata("FORECAST_QTY
").get(newMember_ma) +
"forecast spend : " + newMember_ma.getFieldMetadata("FORECAST_S
PEND").get(newMember_ma) +
"forecast limit pct : " + newMember_ma.getFieldMetadata("FORECAS
T_LIMIT_PCT").get(newMember_ma) +
"limit qty: " + newMember_ma.getFieldMetadata("LIMIT_QTY").get(n
ewMember_ma) +
"minimun qty : " + newMember_ma.getFieldMetadata("MINIMUM_QTY")
.get(newMember_ma) +
"minimum days offset : " + newMember_ma.getFieldMetadata("MINIM
UM_DAYS_OFFSET").get(newMember_ma) +
"unit price : " + newMember_ma.getFieldMetadata("UNIT_PRICE").ge
t(newMember_ma) +
"extended price : " + newMember_ma.getFieldMetadata("EXTENDED_P
RICE").get(newMember_ma) +
"req total qty : " + newMember_ma.getFieldMetadata("REQ_TOTAL_QT
Y").get(newMember_ma) +
"deliv date : " + newMember_ma.getFieldMetadata("DELIV_DATE").g
et(newMember_ma) +
"price unit : " + newMember_ma.getFieldMetadata("PRICE_UNIT").g
et(newMember_ma) +
"acct asgn cat : " + newMember_ma.getFieldMetadata("ACCT_ASGN_C
AT").get(newMember_ma) +
"item cat : " + newMember_ma.getFieldMetadata("ITEM_CAT").get(n
ewMember_ma) +
"ext doc ref : " + newMember_ma.getFieldMetadata("EXT_DOC_REF")
.get(newMember_ma) +
"formula number : " + newMember_ma.getFieldMetadata("FORMULA_NUM
BER").get(newMember_ma) );
del_terms_ma = newMember_ma.getCollectionMetadat
a("DELIVERY_TERMS_COLLN").get(newMember_ma);
logInfo("JLA duplicate del_terms_ma: " + del_ter
ms_ma + del_terms_ma.size() );
del_quan_ma = newMember_ma.getCollectionMetadata
("QUANTITY_RANGES").get(newMember_ma);
logInfo("JLA duplicate del_quan_ma: " + del_quan
_ma + del_quan_ma.size() );
size = del_terms_ma.size();
linea = del_terms_ma.get(0);
logInfo("JLA DELIVERY_TERMS_COLLN "+ size + "in
fo" + linea );
logInfo("JLA DELIVERY TERMS COLLN MASTER AGREEME
NT VALIDATE "+ size + "info" + linea + "display name : " + linea .getFieldMet
adata("DISPLAY_NAME").get(linea ) + "action code : " + linea .getFieldMetadata(
"ACTION_CODE").get(linea ) + "parent : " + linea .getFieldMetadata("PARENT").get
(linea ) + "quantity ranges obj ref : " + linea .getFieldMetadata("QTY_RANGE_OBJ
_REF").get(linea ) + "awarded: " + linea .getFieldMetadata("AWARDED").get(linea
) + "delivery term : " + linea .getFieldMetadata("DELIVERY_TERM").get(linea )
+ "unit price : " +linea .getFieldMetadata("UNIT_PRICE").get(linea ) + "extend
ed price: " +linea .getFieldMetadata("EXTENDED_PRICE").get(linea ) + "original
price : " + linea .getFieldMetadata("ORIG_PRICE").get(linea ) + "decline to bid
: " + linea .getFieldMetadata("DECLINE_TO_BID").get(linea ) );
condition_scales_ma = newMember_ma.getCollectio
nMetadata("CONDITION_SCALES").get(newMember_ma);
linea_ma = condition_scales_ma.get(0);
size = condition_scales_ma.size();
linea = condition_scales_ma.get(0);
logInfo("JLA condition_scales_ma "+ condition_s
cales_ma.size() + "info" + condition_scales_ma );
logInfo("JLA CONDITION_SCALES MASTER AGREEMENT V
ALIDATE"+ size + "info" + linea + "display name : " + linea .getFieldMetadata
("DISPLAY_NAME").get(linea ) + "action code : " + linea .getFieldMetadata("ACTI
ON_CODE").get(linea ) + "parent : " + linea .getFieldMetadata("PARENT").get(line
a ) + "CONDITION_SETUP : " + linea .getFieldMetadata("CONDITION_SETUP").get(line
a ) + "AMOUNT: " + linea .getFieldMetadata("AMOUNT").get(linea ) + "PERCENT : "
+ linea .getFieldMetadata("PERCENT").get(linea ) + "INCO_TERM : " +linea .ge
tFieldMetadata("INCO_TERM").get(linea ) );
}
logInfo("***Populate contract Live Cycle ID - ends***");

You might also like