Count saleslines based on Salesperson ?

beckindenmark
Member Posts: 33
Hi guy´s
I need to count saleslines for each salesperson, but this code gives wrong result. If I count salesheader result is correct, so I think it´s the REPEAT that make my head hurt :-)
Hopefully a frindly NAV guru could help me out ?
Here is my code (NAV 5.0)
rSalesHeader.RESET;
rSalesLine.RESET;
salesFilter := "Salesperson/Purchaser".Code;
rSalesHeader.SETRANGE(rSalesHeader."Document Type",rSalesHeader."Document Type"::Order);
rSalesHeader.SETFILTER(rSalesHeader."Order Date",datefilter);
rSalesHeader.SETRANGE(rSalesHeader."Salesperson Code",salesFilter);
IF rSalesHeader.FINDSET THEN
REPEAT
rSalesLine.SETRANGE(rSalesLine."Document No.",rSalesHeader."No.");
rSalesLine.SETRANGE(rSalesLine.Type,rSalesLine.Type::Item);
rSalesLine.SETRANGE(rSalesLine."Quantity Shipped",0);
ok := rSalesLine.GET;
CountLines += rSalesLine.COUNT;
UNTIL rSalesHeader.NEXT = 0;
OrderLinesQty := CountLines;
I need to count saleslines for each salesperson, but this code gives wrong result. If I count salesheader result is correct, so I think it´s the REPEAT that make my head hurt :-)
Hopefully a frindly NAV guru could help me out ?
Here is my code (NAV 5.0)
rSalesHeader.RESET;
rSalesLine.RESET;
salesFilter := "Salesperson/Purchaser".Code;
rSalesHeader.SETRANGE(rSalesHeader."Document Type",rSalesHeader."Document Type"::Order);
rSalesHeader.SETFILTER(rSalesHeader."Order Date",datefilter);
rSalesHeader.SETRANGE(rSalesHeader."Salesperson Code",salesFilter);
IF rSalesHeader.FINDSET THEN
REPEAT
rSalesLine.SETRANGE(rSalesLine."Document No.",rSalesHeader."No.");
rSalesLine.SETRANGE(rSalesLine.Type,rSalesLine.Type::Item);
rSalesLine.SETRANGE(rSalesLine."Quantity Shipped",0);
ok := rSalesLine.GET;
CountLines += rSalesLine.COUNT;
UNTIL rSalesHeader.NEXT = 0;
OrderLinesQty := CountLines;
0
Answers
-
Try this code(not tested)
rSalesHeader.RESET; rSalesLine.RESET; salesFilter := "Salesperson/Purchaser".Code; rSalesHeader.SETRANGE(rSalesHeader."Document Type",rSalesHeader."Document Type"::Order); rSalesHeader.SETFILTER(rSalesHeader."Order Date",datefilter); rSalesHeader.SETRANGE(rSalesHeader."Salesperson Code",salesFilter); IF rSalesHeader.FINDSET THEN REPEAT rSalesLine.SETRANGE(rSalesLine."Document No.",rSalesHeader."No."); rSalesLine.SETRANGE(rSalesLine.Type,rSalesLine.Type::Item); rSalesLine.SETRANGE(rSalesLine."Quantity Shipped",0); IF rSalesLine.FINDSET THEN REPEAT CountLines += 1; UNTIL rSalesLine.next = 0; UNTIL rSalesHeader.NEXT = 0; OrderLinesQty := CountLines;
0 -
Try to delete line
ok := rSalesLine.GET;
from your code.Sincerely yours, GRIZZLY
Follow my blog at http://x-dynamics.blogspot.com0 -
I solved it by adding these two in AfterGetRecord. At first I have them in BeforeGetRecord #-o
CountLines := 0;
OrderLinesQty := 0;
//Lars0
Categories
- All Categories
- 73 General
- 73 Announcements
- 66.6K Microsoft Dynamics NAV
- 18.7K NAV Three Tier
- 38.4K NAV/Navision Classic Client
- 3.6K Navision Attain
- 2.4K Navision Financials
- 116 Navision DOS
- 851 Navision e-Commerce
- 1K NAV Tips & Tricks
- 772 NAV Dutch speaking only
- 617 NAV Courses, Exams & Certification
- 2K Microsoft Dynamics-Other
- 1.5K Dynamics AX
- 320 Dynamics CRM
- 111 Dynamics GP
- 10 Dynamics SL
- 1.5K Other
- 990 SQL General
- 383 SQL Performance
- 34 SQL Tips & Tricks
- 35 Design Patterns (General & Best Practices)
- 1 Architectural Patterns
- 10 Design Patterns
- 5 Implementation Patterns
- 53 3rd Party Products, Services & Events
- 1.6K General
- 1.1K General Chat
- 1.6K Website
- 83 Testing
- 1.2K Download section
- 23 How Tos section
- 252 Feedback
- 12 NAV TechDays 2013 Sessions
- 13 NAV TechDays 2012 Sessions