Invoice Created UDF?

I'm trying to make a UDF in Sales Order Header that will be a Y/N value indicating whether or not an invoice has been created for that order.

Any ideas?

Parents Reply Children
  • 0 in reply to Brown0987

    Go into SO Invoice Entry, create a new invoice, and enter the SO # (before leaving the Header tab).  Set line quantities, post, and the SO is updated then with what was invoiced (but if all lines were shipped complete, the SO disappears from SO Entry).  If any lines were short-shipped, the OrderType changes to B, with a Last Invoice No populated and line quantities updated.

    Retaining SO history is optional, and if you need to report on fully shipped SO, you will want to ensure that is turned on.

  • 0 in reply to Kevin M

    Oh, we create all orders in Sales Order Entry. I guess that's why those fields don't work? And the order type never changes?

  • 0 in reply to Brown0987

    An SO is not a transaction, it is a potential transaction. 

    Create SO in SO Entry, then invoice in SO Invoice Entry. 

    If you are not invoicing, you are not processing the transactions (removing inventory, creating the GL entries, creating the invoices for customers to pay...).

  • 0 in reply to Kevin M

    Yeah, we just don't use Invoice Entry to invoice them. Either Starship or Scanforce creates our invoice, depending on the order type, and writes it back to Sage.

  • 0 in reply to Brown0987

    That is fine.  There are other ways to create the invoices... it doesn't need to be though the Sage interface, but the invoice data should go to those tables.

    You are posting the invoices?  If you look at them in AR invoice history inquiry, there is an SO # listed?

    If yes, then the SO should either be "B" or gone from the open SO tables.

  • 0 in reply to Kevin M

    Oh, I'm talking about before we run the update (before they go to history). 

    I want an identifier that tells me when an open SO has been invoiced. It will not be posted at this point.

  • 0 in reply to Kevin M

    Well, I'd like to get into scripting but don't know where to begin.

    Could anyone help me out with a simple script where IF the CurrentInvoiceNo field is > 1, it populates a UDF with a Y?

  • 0 in reply to Brown0987

    Column post validate on that field.

    if value <> "" then

    retVal = oBusObj.SetValue("UDF_YOURFIELDNAMEHERE$", "Y")

    else

    retVal = oBusObj.SetValue("UDF_YOURFIELDNAMEHERE$", "N")

    end if

  • 0 in reply to Kevin M

    Unfortunately, a brief test on version 2018 resulted in neither the post validate of CurrentInvoiceNo or the pre write of SO_SalesOrderHeader events firing when invoicing a sales order.

    As Kevin pointed out, if the CurrentInvoiceNo field is populated, it is currently being shipped/invoiced. You can use this in the sales order entry/inquiry lookup or any reports you might be running to determine whether or not an invoice exists. In the report, you can always translate it to "Yes" or "No".

    Once it is posted and if you are retaining sales history, then you can refer to LastInvoiceDate and/or LastInvoiceNo fields in SO_SalesOrderHistoryHeader if you are using SO History vs AR Invoice History for orders that shipped complete. If the order was not shipped complete, then you can refer to LastInvoiceOrderDate and LastInvoiceOrderNo in SO_SalesOrderHeader.

  • 0 in reply to David Speck

    You're saying that script won't work?