Shipment packaging problems after updating to Sage ERP 2014 Update 4 (5.10.4.0)

SOLVED

Hi Forum,

Our shipping software' packaging logic fails after customers updated to Sage ERP 2014 5.10.4.0, due to the new Sage ERP Shipping Data Entry verification of packaged quantity to be matching shipped quantity. It is described in Sage release notes, that is understood.

How our software works is it adjusts the shipment entries quantities, saves/commits the change, then walks through the invoice packages, adjusts package quantities where needed creating a new package per each new tracking number.

This does not work now, as Sage ERP adjusts package quantities when the shipment is saved, putting the newly fulfilled quantities into the latest existing package. Our logic then creates redundant package entries which generates the error.

What are my choices in overriding Sage ERP logic and putting newly fulfilled quantities to a new package?

Editing package quantities after the invoice was saved does not seem to work. Can I update packaging using some internal property of SO_InvoiceDetail_BUS, before committing the invoice detail changes?

Please advise,

this seems to be a huge issue affecting all our Sage ERP BOI customers.

Thanks,

Alex

V-Technologies

Parents Reply Children
  • 0 in reply to Nicole Ronchetti

    That is correct, I was talking too about the shipping data entry dialog.

  • 0 in reply to postnik706

    When starship writes the invoice information into Sage do you write the quantity shipped to the SO_InvoiceDetail and then write the data into the package table?

  • 0 in reply to Nicole Ronchetti

    No, we write to SO_Shipping and its oLines collection.

  • 0 in reply to postnik706

    postnik706,

    We corrected a discrepancy between the UI and the BUS objects in the PU.  Shipping Data Entry automatically puts all items in package 1 without the user doing anything.  However, when the shipping invoice was created using BOI or VI, no package record was created.

    Let's see if I understand your process correctly. You use the SO_Shipping_bus object to write the invoice and lines.  After the invoice is written, you use SO_PackingTackingByItem_bus to put items into packages.  Then you update NumberOfPackages in SO_InvoiceHeader, I suppose.

    I don't know if this idea will work for you.  When you add lines, put eveything in a package number that you normally won't use (eg. 9999).  After the invoice is written, you check if there are items in package 9999.  Then you move them to the correct package.

    Or if you know what package an item is going into while you update the lines, you can set the PackageNo$ property.

    Note the 2 lines that set PackageNo$ in the example below.

    oHeader = NEW("SO_Shipping_bus",%sys_ss)

    oHeader'Lines'PackageNo$ = "" ! so that CopyLinesFromSalesOrder won't put them in package 1

    SalesOrderNo$ = "0000174"

    r = oHeader'GetNextInvoiceNo(nextInvNo$)

    r = oHeader'SetKeyValue("InvoiceNo$",nextInvNo$)

    r = oHeader'SetKey()

    r = oHeader'SetValue("ShipperID$", "1")

    r = oHeader'SetValue("SalesOrderNo$", SalesOrderNo$)

    r = oHeader'Lines'CopyLinesFromSalesOrder(SalesOrderNo$)

    r = oHeader'Lines'MoveFirst()

    WHILE NOT(oHeader'Lines'EOF)

    r = oHeader'Lines'GetValue("ItemCode$", item$); msgbox "shipping " +item$

    r = oHeader'Lines'GetValue("QuantityOrdered", qty)

    r = oHeader'Lines'SetValue("QuantityShipped", qty)

    oHeader'Lines'PackageNo$ = "9999" ! put everything in package "9999"

    r = oHeader'Lines'Write()

    if not(r) then msgbox "Write Line Error: "+ oHeader'Lines'LastErrorMsg$

    r = oHeader'Lines'MoveNext()

    WEND

    r = oHeader'Write()

    if not(r) then msgbox "Write Header Error: " + oHeader'LastErrorMsg$ else msgbox "Done"

    drop object oHeader

  • 0 in reply to Natasha Chang

    Using VBScript the property assignment looks like this:

    r = oHeader.oLines.sPackageNo = "9999"

    Reading this property gives "0001" so I must be on the right track.

    Writing into the property returns error message: "Error setting package number: "WF&A" is not numeric."

    "WF&A" is the product line Id of product 1001-HON-H252 I used in the order; not sure how these are related. Will do my best to overcome this but would appreciate any advice.

    Thanks,

    Alex

  • 0 in reply to postnik706

    Cannot resolve this - please advise what the next step would be.

    Thank you Natasha.

    Alex

  • 0 in reply to postnik706

    I think you just need to do oHeader.oLines.sPackageNo = "9999" (without the r =). It isn't a method call. It doesn't return a value.

  • 0 in reply to postnik706

    Got it, my bad - thank you so much.

    Just to be sure I am getting it correctly - (1) we may NOT edit package quantities directly, using SO_PackageTrackingByItem_BUS / SetValue as we did before, should use shipping data entries / lines quantities. (2) Shipment's oHeader.oLines.sPackageNo is a selector pointing out to the 'current' package. (3) A shipment has to be written after sPackageNo is set up to a desired value, before we can further process the next package.

    Thanks,

    Alex

  • 0 in reply to postnik706

    Alex,

    1)  You can still use SO_PackageTrackingByItem_Bus to edit the packages after the invoice is written, if sPackageNo doesn't give you the control you need.

    2) Yes.  Default is "0001".

    3) sPackageNo should be set before each invoice line is written.  Each line can have different sPackageNo. You don't have to finish packing package 1 before you start package 2.  You  should be able to change sPackageNo from 1 to 2 and back to 1.

    It looks like each incremental qty can be assigned to a different package.  For example, if the qty shipped on a line is 1 and it is changed to 2, the new qty (1) can be put in a different package (whatever sPackageNo is  when the line is written).  (I haven't tried this myself.  I am just looking at the code).

  • 0 in reply to Natasha Chang

    Re 1) - no, this does not work. That is why we have this problem in the first place.

    I double checked with my script, but it could be easily replicated in Sage UI - if you try to edit existing package quantities.