Printing Approved Purchase Order

Hi all,

We have set up the approving process in my company in order to control the purchase order for a cashflow issue.

However, even though the purchaser now need to request an approval for:

  • posting the order

  • Receiving the goods

  • Receiving invoice

They don’t need any approval to print a “not approved order”. This mean that they can send to the supplier the printing order and then received the goods (even though they have not been approved)… The approval process is then useless.

My question is then the following: how can we make Nav authorise printing only if the purchase order has been approved?

Thank you & have a good day,


Hi Bastien,

I would go for a small modification in the according report. Do you know how to do that? You could just enter something like

IF Status = Status::“Pending Approval” then


in the onaftergetrecord-trigger of the purchase header



Hi Bastien

Welcome to DUG!!

Which version of Navision you are using ?? It is classic client or RTC client ?

Are you using Standard Approval process and have you customized the process ??

Hi Amol and Jan,

Thank you for your answers and your welcoming message.

i am using NAV 2013 and using the standard approval process without any particular customs.

I have developed my SI and PO on Nav dynamic Development Environment (software), so are you advising me to add this small modification in the PO document through this software?

Thank you,


Hi Bastien,

yes, that would be my suggestion in this case.



Hi All,

Here the solution for my problem. I am using Microsoft Dynamic Development Environment (software), once you try to design your report (PO in my case), go in the tab on top call “View” and then “C/AL Code”.

There you have a page code poping up and you write the following :

IF (Status = Status::“Pending Approval”) OR (Status = Status::Open) OR (Status = Status::“Pending Prepayment”) THEN BEGIN

ERROR(‘Purchase Order must be approved before printing’);


WRITE This above just after this here under:

Purchase Header - OnAfterGetRecord()

CurrReport.LANGUAGE := Language.GetLanguageID(“Language Code”);


Thank you for your help!


Thanks for this Bastien just helped me out with a little niggle we had internally



What about the Partially delivered the Purchase Order Status is released, how can we stop the printing option?

You have to write a logic to check whether the Quantity and Quantity Received field values are same in all related Purchase Lines.