Are we able to hide selection before posting?

julkifli33julkifli33 Member Posts: 1,073
Hi all,
for cloud bc, are we able to hide selection before post?
45vyxzf7bskt.png

I want to allow user only has "Ship"
but hide "Ship & Invoice"

my idea is duplicate the standard code, and then hide Ship & Invoice.
any other better and efficient way?

Thanks before

Best Answers

  • yukonyukon Member Posts: 361
    Answer ✓
    How about this?
    Use second option if you do not want to show any message.
        [EventSubscriber(ObjectType::Codeunit, Codeunit::"Whse.-Post Shipment (Yes/No)", 'OnBeforeConfirmWhseShipmentPost', '', false, false)]
        local procedure OnBeforeConfirmWhseShipmentPostSub(var WhseShptLine: Record "Warehouse Shipment Line"; var HideDialog: Boolean; var Invoice: Boolean; var IsPosted: Boolean; var Selection: Integer)
        var
            MsgConfirmLbl: Label 'Do you want to ship?';
            MsgCancelLbl: Label 'Posting is canceled';
        begin
            Selection := 1; // Default is ship
            HideDialog := true;
    
            /*  First Option for user Cancel */
            if (GuiAllowed) then
                if not Confirm(MsgConfirmLbl) then
                    Error(MsgCancelLbl);
    
            /*  Second Option for user Cancel */
            if (GuiAllowed) then
                if not Confirm(MsgConfirmLbl) then
                    IsPosted := true;
        end;
    
    Make Simple & Easy
  • DenSterDenSter Member Posts: 8,304
    Answer ✓
    There is a way to override the standard dialog, but it involves a little more than just setting the 'Selection' variable.

    Take a look at the 'posting yes/no' codeunits, for instance codeunit 81 which is Sales Post Yes/No.
    enmirthcs7wg.png
    Go into the ConfirmPost function to see how standard BC controls whether it will do Ship or Invoice, and make sure that your own event subscriber sets the right values
    z0icd6v3h3m5.png

Answers

  • yukonyukon Member Posts: 361
    Answer ✓
    How about this?
    Use second option if you do not want to show any message.
        [EventSubscriber(ObjectType::Codeunit, Codeunit::"Whse.-Post Shipment (Yes/No)", 'OnBeforeConfirmWhseShipmentPost', '', false, false)]
        local procedure OnBeforeConfirmWhseShipmentPostSub(var WhseShptLine: Record "Warehouse Shipment Line"; var HideDialog: Boolean; var Invoice: Boolean; var IsPosted: Boolean; var Selection: Integer)
        var
            MsgConfirmLbl: Label 'Do you want to ship?';
            MsgCancelLbl: Label 'Posting is canceled';
        begin
            Selection := 1; // Default is ship
            HideDialog := true;
    
            /*  First Option for user Cancel */
            if (GuiAllowed) then
                if not Confirm(MsgConfirmLbl) then
                    Error(MsgCancelLbl);
    
            /*  Second Option for user Cancel */
            if (GuiAllowed) then
                if not Confirm(MsgConfirmLbl) then
                    IsPosted := true;
        end;
    
    Make Simple & Easy
  • DenSterDenSter Member Posts: 8,304
    Answer ✓
    There is a way to override the standard dialog, but it involves a little more than just setting the 'Selection' variable.

    Take a look at the 'posting yes/no' codeunits, for instance codeunit 81 which is Sales Post Yes/No.
    enmirthcs7wg.png
    Go into the ConfirmPost function to see how standard BC controls whether it will do Ship or Invoice, and make sure that your own event subscriber sets the right values
    z0icd6v3h3m5.png

  • julkifli33julkifli33 Member Posts: 1,073
    Hi @yukon & @DenSter
    thanks for your reply.
    i will test and try
Sign In or Register to comment.