martes, 26 de enero de 2016

Tip | Trabajando con Solicitudes de Compra WF/PurchReqLine propiedad SaveDataPerCompany

Si alguna vez quieren trabajar con las aprobaciones de Workflow de las Solicitudes de compra, capturar su estado o gestionar para algún proceso, deben tener en cuenta que la tabla PurchReqLine tiene la propiedad SaveDataPerCompany en NO.



Así que si quieren almacenar el estado de la solicitud de compra en alguna tablaNueva esta también debe tener igual la propiedad, de lo contrario no podrán almacenar la información de los estados.

El estado de Workflow lo podemos capturar en la clase PurchReqWFStatusTransitionHelper/updatePurchReqLine, para el ejemplo he puesto un método me captura el estado de la aprobación y mediante un campo nivel lo controlo para subir de nivel y trabajar con otros estados en la tabla adicional.

 private void updatePurchReqLine(PurchReqLine purchReqLine, boolean _doVersioning)  
 {  
   ;  
   purchReqLine.RequisitionStatus = toRequisitionStatus;  
   purchReqLine.update(_doVersioning);  
   this.updatePurchReqLineState(purchReqLine); //Método Nuevo  
 }  


En el ejemplo del método se gestiona el estado original de la PurchReqLine para en la tabla nueva mostrar otro estado.

 private void updatePurchReqLineState(PurchReqLine _reqLine = null)  
 {  
   PurchReqLine       tablaNueva;  
   ;  
   tablaNueva = tablaNueva::findRefRecId(_reqLine.RecId, true);  
   if(tablaNueva)  
   {  
     ttsbegin;  
     switch (_reqLine.RequisitionStatus)  
     {  
       case PurchReqRequisitionStatus::Draft:  
         tablaNueva.cmhStatusPurchReq = StatusPurchReq::Create;  
         tablaNueva.Level = 0;  
         tablaNueva.doUpdate();  
         break;  
       case PurchReqRequisitionStatus::InReview:  
           tablaNueva.cmhStatusPurchReq = StatusPurchReq::Revision;  
           tablaNueva.Level = 1;  
           tablaNueva.doUpdate();  
            break;  
       case PurchReqRequisitionStatus::Approved:  
           if(cmhreqLine.Level == 1)  
           {  
             tablaNueva.cmhStatusPurchReq = StatusPurchReq::RevisedUser;  
             tablaNueva.Level += 1;  
             tablaNueva.doUpdate();  
                      }  
           else if(cmhreqLine.Level == 2)  
           {  
             tablaNueva.cmhStatusPurchReq = StatusPurchReq::RevisedPCI;  
             tablaNueva.Level += 1;  
             tablaNueva.doUpdate();  
           }  
           else if(cmhreqLine.Level == 3)  
           {  
             tablaNueva.cmhStatusPurchReq = StatusPurchReq::ApprovedHeadquarters;  
             tablaNueva.Level += 1;  
             tablaNueva.doUpdate();  
           }  
 .......  



Al final obtenemos la información que necesitamos.



La información en tabla queda así:



No hay comentarios:

Publicar un comentario