cancel
Showing results for 
Search instead for 
Did you mean: 

Creation of an agreement with item lines from a project

Former Member
0 Kudos

Hi Expert,

my client has a specific business case where Sap Sourcing bid process is not applicable and an award process is outside the system. So an agreement is created from a project but we miss line items created in previous steps in RFX. Once RFX is replicated from SAP ERP it's linked with a project. I'm just wondering how to create an agreement based on project  coping also line item data from a linked RFX. I'm afraid it won't be easy as RFX line items and an Agreement line items have different structure.

Maybe you have any experience how to copy line items from RFX and paste into an agreement.

Your response will be very appreciated.

Marcin

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

Hi,

we are trying to copy line items from Master Agreement to a Subagreement but we are not able to do it. Did you manage to copy line items from RFx to Master Agreement?

Many thanks.

Marc R.

Former Member
0 Kudos

Hi Marc,

Yes we managed to copy line items from a RFX to a Master Agreement. We used script which was not trivial but feasible.

Best regards,

Marcin

Former Member
0 Kudos

Thank you Marcing for your prompt reply. Could you please have a quick look to the post and give us advice what we are doing wrong?

Regards,

Marc

Former Member
0 Kudos

Marc,

please find below a part of our script responsible for coping line items from a RFX and adding these lines to a Master Agreement. A MA is created from a Project and a RFX must be linked with this project.

While creating MA you have to select MA template (not MA type) because only template will create default line item group where line items are added..

/* start funkcjonalności do dodawania linii z RFX  */

iter = doc.getDocumentLinkList().iterator();

exist = "false";

proj_id = null;

for (memb : iter)

{

    if (hasValue(memb.getLinkDocId()) @and hasValue(memb.getLinkDefinitionObjRef().getDisplayName())) {

        logInfo("A1AAAA3: " + memb.getLinkDocId()  );

        logInfo("A1AAAA3: " + memb.getLinkDefinitionObjRef().getDisplayName() );

        if ( memb.getLinkDefinitionObjRef().getDisplayName().equals("Powiązany projekt") ) {

            proj_id = memb.getLinkDocId();

        }

    }

}

if (hasValue(proj_id) @and collectionsize == 0) {

  // tworzymy Home dla obiektu Projekt

  myProjHome = IBeanHomeLocator.lookup(session, ProjectIBeanHomeIfc.sHOME_NAME );

  // szukamy poprzez Home konkretnej instancji projektu

  relProjectIfc = myProjHome.findForEditByUniqueDocName(proj_id);

  if (hasValue(relProjectIfc)) {

     logInfo("AWAWAWAW" + relProjectIfc.getDisplayName() );

     rfx_name = relProjectIfc.getExtensionField("zmm_nr_rfx").get();

     if(hasValue(rfx_name)) {

       myRFXHome = IBeanHomeLocator.lookup(session, RfxDocIBeanHomeIfc.sHOME_NAME);

       myRFX = myRFXHome.findByUniqueDocName(rfx_name);

       if(hasValue(myRFX)) {

         logInfo("huuuraaazz" + myRFX.getDisplayName());

                 iter2 = myRFX.getLineItems().iterator();

         doc.getFieldMetadata("PURCHASING_GRP").set(doc, myRFX.getFieldMetadata("PURCHASING_GRP").get(myRFX));   

         doc.getFieldMetadata("PURCHASING_ORG").set(doc, myRFX.getFieldMetadata("PURCHASING_ORG").get(myRFX));   

         doc.getFieldMetadata("COMPANY_CODE").set(doc, myRFX.getFieldMetadata("COMPANY_CODE").get(myRFX));   

         doc.getFieldMetadata("TRANSACTION_TYPE").set(doc, myRFX.getFieldMetadata("TRANSACTION_TYPE").get(myRFX));   

        // doc.getFieldMetadata("DELIVERY_TERM_FIRST").set(doc, myRFX.getFieldMetadata("DELIVERY_TERM_FIRST").get(myRFX));   

        // doc.getFieldMetadata("DELIVERY_TERM_LOCATION").set(doc, myRFX.getFieldMetadata("DELIVERY_TERM_LOCATION").get(myRFX));   

        // doc.getFieldMetadata("DELIVERY_TERM_LOCKED").set(doc, myRFX.getFieldMetadata("DELIVERY_TERM_LOCKED").get(myRFX));   

        // doc.getFieldMetadata("DELIVERY_TERM_SETUP").set(doc, myRFX.getFieldMetadata("DELIVERY_TERM_SETUP").get(myRFX));   

         //doc.getTerms().set(doc, myRFX.getDeliveryTerms().get(0) );

       

         for (rfxline : iter2)

         {

               agr_docline = doc.getLineItems().create();

         if(hasValue( rfxline.getFieldMetadata("MATERIAL").get(rfxline) )) {

             // jeśli jest materiał to pobierz materiał, ilość, zakład

              agr_docline.getFieldMetadata("MATERIAL").set(agr_docline, rfxline.getFieldMetadata("MATERIAL").get(rfxline));

              agr_docline.getFieldMetadata("QUANTITY").set(agr_docline, rfxline.getFieldMetadata("QUANTITY").get(rfxline));

             agr_docline.getFieldMetadata("PLANT").set(agr_docline, null);

         } else {

             // jeśli materiał jest pusty pobierz Description, Product Category, Price Unit

             // Description - DOCUMENT_DESCRIPTION, LONG_DESC

             // Product Category - ITEM_CAT, INTERNAL_CAT, ACCT_ASGN_CAT

             // Price Unit - PRICE_UNIT

              agr_docline.getFieldMetadata("QUANTITY").set(agr_docline, rfxline.getFieldMetadata("QUANTITY").get(rfxline));

              agr_docline.getFieldMetadata("INTERNAL_CAT").set(agr_docline, rfxline.getFieldMetadata("INTERNAL_CAT").get(rfxline));

              agr_docline.getFieldMetadata("DOCUMENT_DESCRIPTION").set(agr_docline, rfxline.getFieldMetadata("DOCUMENT_DESCRIPTION").get(rfxline));

             agr_docline.getFieldMetadata("PRICE_UNIT").set(agr_docline, rfxline.getFieldMetadata("PRICE_UNIT").get(rfxline));

            //agr_docline.getFieldMetadata("AWARDED_INCOTERM_LOCATION").set(agr_docline, rfxline.getFieldMetadata("DOCUMENT_DESCRIPTION").get(rfxline));

            //logInfo("A12345: " +  agr_docline.getFieldMetadata("LINE_ITEM_NUMBER_COMP").get(agr_docline) );

            //logInfo("A12345: " +  agr_docline.getFieldMetadata("DOCUMENT_DESCRIPTION").get(agr_docline) );

             //agr_docline.getFieldMetadata("PLANT").set(agr_docline, null);

          }

        

         //agr_docline.getCollectionMetadata("DOCUMENT_LINKS").set(agr_docline, rfxline.getCollectionMetadata("DOCUMENT_LINKS").get(rfxline));

         iter33 = rfxline.getDocumentLinkList().iterator();

//         logInfo("QQQQ03: bylem: " + rfxline.getDocumentLinkList().size());

            for (docLink : iter33)

             {   

           

                //logInfo("QQQQ03: " + memb33.getLinkDocId()  );

                //logInfo("QQQQ011: " + docLink.getLinkDefinitionObjRef().getDisplayName() );

                dl = agr_docline.getDocumentLinkList().create();

                dl.setDisplayName( docLink.getDisplayName() );

                dl.setLinkDefinitionType( docLink.getLinkDefinitionType() );

                    //dl.setLinkDocObjRef( docLink.getObjectReference() );

                dl.setLinkDocObjRef( docLink.getLinkDocObjRef() );

                dl.setLinkDefinitionObjRef( docLink.getLinkDefinitionObjRef() );

                dl.setLinkDocId( docLink.getLinkDocId() );

                dl.setExtRefDoc( docLink.getExtRefDoc() );               

                dl.setExtRefLine( docLink.getExtRefLine() );

                dl.setLinkExternalDocName( docLink.getLinkExternalDocName() );

                dl.setLinkExternalDocUrl( docLink.getLinkExternalDocUrl() );

                logInfo("QQQQ0114: " + dl.getDisplayName() );

                agr_docline.getDocumentLinkList().add(dl);

            }

         doc.getLineItems().add(agr_docline);

         }

Regards,

Marcin

Former Member
0 Kudos

Thank you Marcin,

we were able to create line items but we are facing issues to copy price condition table. This piece of code is not a straight-forward development...

Regards,

Marc R.

Former Member
0 Kudos

Hi Marcin ,

Even I have the same requirement , technically it os possible through script , if anybody used any configuration to do it ?

Regards,

Piyush Srivastava

Former Member
0 Kudos

Piyush,

have you managed to create such script? If yes could you share your knowledge how to do this? Thanks in advance.

Marcin