Sales Order Form help

Dave_SDave_S Member Posts: 17
Hi,

I need some help in understanding the Sales Order Form, i need to check if the customer selected already has an order loaded for the requested delivery date and if so prompt the user to edit by selecting the order from the lookup form. I have written some code which gets called from the Requested Delivery Date.onAfterValidate
// 20-1-2009 DS Added function to check if there is already an order loaded for this day, if so delete current
// order then navigate to order that has been loaded.
TempSalesHeader.INIT ;
TempSalesHeader.SETCURRENTKEY("Document Type","Sell-to Customer No.","No.");    // Key to use
//TempSalesHeader.SETRANGE("Document Type","Document Type"::Order);
TempSalesHeader.SETRANGE("Requested Delivery Date",ReqDelDate);  // Filter for requested del date
TempSalesHeader.SETRANGE("Sell-to Customer No.",CusCode);        // Filter for requested customer

// Now check to see if there are any orders for this customer...
IF TempSalesHeader.ISEMPTY = FALSE THEN BEGIN
  // Found order(s) so display the order list filtered to only orders for this customer for the requested
  // delivery date.
  IF CONFIRM('Another order for this customer has been loaded for this date\\Do you wish to edit')= TRUE THEN BEGIN
    // Create an Sales Order list form containing the customers orders already loaded for the delivery day.
    CLEAR(FrmOrderList);                                                   // Clear the lookup form variable.
    FrmOrderList.SETTABLEVIEW(TempSalesHeader);                            // Pass the range settings from above to form
    FrmOrderList.LOOKUPMODE := TRUE;                                       // Set lookup form flag
    IF FrmOrderList.RUNMODAL = ACTION::LookupOK THEN BEGIN                 // Run list of orders filtered for cus & date

      FrmOrderList.GETRECORD(TempSalesHeader);                             // Get record from order list


     DELETE;
      // Now locate the record returned from the order list....
     SETRANGE("No.",TempSalesHeader."No.");
      IF NOT FINDFIRST THEN
        ERROR('Cannot locate record');


    END;
    CLEAR(FrmOrderList);
  END;
END;

// Clean up
CLEAR(TempSalesHeader);

My problem is when i get to the selected order after i move to the order lines i get the message Do You Want To Rename Record? Is there a function i should be calling after my FINDFIRST, or is the above code not was is required. I am new to NAV so please be gentle :)

Comments

  • DaveTDaveT Member Posts: 1,039
    Hi Dave,

    Try a CURRFORM.UPDATE(FALSE); after the delete.
    Dave Treanor

    Dynamics Nav Add-ons
    http://www.simplydynamics.ie/Addons.html
  • Dave_SDave_S Member Posts: 17
    Hi DaveT,

    Cheers very much, i changed my code to this:-
    TempSalesHeader.RESET ;
    TempSalesHeader.SETCURRENTKEY("Document Type","Sell-to Customer No.","No.");    // Key to use
    TempSalesHeader.SETRANGE("Requested Delivery Date",ReqDelDate);  // Filter for requested del date
    TempSalesHeader.SETRANGE("Sell-to Customer No.",CusCode);        // Filter for requested customer
    
    // Now check to see if there are any orders for this customer...
    IF TempSalesHeader.ISEMPTY = FALSE THEN BEGIN
      // Found order(s) so display the order list filtered to only orders for this customer for the requested
      // delivery date.
      IF CONFIRM('Another order for this customer has been loaded for this date\\Do you wish to edit')= TRUE THEN BEGIN
        // Create an Sales Order list form containing the customers orders already loaded for the delivery day.
        CLEAR(FrmOrderList);                                                   // Clear the lookup form variable.
        FrmOrderList.SETTABLEVIEW(TempSalesHeader);                            // Pass the range settings from above to form
        FrmOrderList.LOOKUPMODE := TRUE;                                       // Set lookup form flag
        IF FrmOrderList.RUNMODAL = ACTION::LookupOK THEN BEGIN                 // Run list of orders filtered for cus & date
    
        FrmOrderList.GETRECORD(TempSalesHeader);                             // Get record from order list
      
         DELETE;
         CurrForm.UPDATE(FALSE);
    
          // Now locate the record returned from the order list....
         SETRANGE("No.",TempSalesHeader."No.");
         IF ISEMPTY = TRUE THEN BEGIN
            SETRANGE("No.");
            FINDFIRST;
         END;
    
         CurrForm.UPDATE(FALSE);
         SETRANGE("No.");
    
        END;
        CLEAR(FrmOrderList);
      END;
    END;
    
    // Clean up
    TempSalesHeader.RESET;
    CLEAR(TempSalesHeader);
    

    The currForm.UPDATE(FALSE) made all the difference! Thanks!
  • DaveTDaveT Member Posts: 1,039
    Glad to Help :mrgreen:
    Dave Treanor

    Dynamics Nav Add-ons
    http://www.simplydynamics.ie/Addons.html
Sign In or Register to comment.