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

  • 0

    Wouldn't you want to use the SO_PackageTrackingbyItem_bus instead?

  • 0 in reply to Nicole Ronchetti

    Yes, that is what we use to process packaging.

    We work with that object outside of the invoice edit context. Sage logic already took part by then and we cannot alter packaging at that point, like we used to.

  • 0 in reply to postnik706

    I am trying to adjust package quantities in UI - it is not saving the changes, even though the totals match those in the invoice.

    Looks like package editing is disabled completely in the business logic?

  • 0 in reply to postnik706

    We probably could resolve this by creating a new package before committing invoice change.

    We could also work with invoice quantities and expect package quantities to be adjusted.

  • 0 in reply to postnik706

    I see (a bug?) though, with editing shipment quantities when there are at least two packages. An edit operation cares only about the quantities in the last package, not accounting for previously shipped.

    Guys, I hope somebody advises what to do next. I would say there is a bug in MAS packaging logic, unless this is a kind of simplification but this one hurts.

    Thanks

  • 0 in reply to postnik706

    I believe that through UI adjusting package information is disabled through Invoice Data Entry but is Available through shipping data entry UI

  • 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