Unit Cost Calculation

niimodin
Member Posts: 142
Hello Experts,
I will like to know if the unit cost calculated on the item card included Routing information (i.e cost of machine centers capacities)
Thanks
I will like to know if the unit cost calculated on the item card included Routing information (i.e cost of machine centers capacities)
Thanks
0
Comments
-
Good afternoon,
I trust Nav does use the available routing info (or appropriate routing version) when one performs the following:
Item Card: Item => Manufa&cturing => Calc. Stan&dard Cost
User selects: Single Level OR All Levels
Then the calculation takes place: it's rather a boring reading, just in case you're really interested, you can have a look at the "OnPush" code => CU 5812 Calculate Standard Cost => CU 5836 Cost Calculation Management
Kind regards,
Pav.
==========================<Control123> - OnPush() CLEAR(CalculateStdCost); CalculateStdCost.CalcItem("No.",FALSE);
==========================
CU 5812 Calculate Standard Cost
CalcItem(ItemNo : Code[20];NewUseAssemblyList : Boolean)CASE STRMENU(Text001) OF 0: EXIT; 1: NewCalcMultiLevel := FALSE; 2: NewCalcMultiLevel := TRUE; END; SetProperties(WORKDATE,NewCalcMultiLevel,NewUseAssemblyList,FALSE,'',FALSE); IF NewUseAssemblyList THEN CalcAssemblyItem(ItemNo,Item,0) ELSE CalcMfgItem(ItemNo,Item,0); IF TempItem.FIND('-') THEN REPEAT ItemCostMgt.UpdateStdCostShares(TempItem); UNTIL TempItem.NEXT = 0;
CalcMfgItem(ItemNo : Code[20];VAR Item : Record Item;Level : Integer) IF Level > MaxLevel THEN ERROR(Text000,MaxLevel); IF GetItem(ItemNo,Item) THEN EXIT; IF NOT CalcMultiLevel AND (Level <> 0) THEN EXIT; WITH Item DO BEGIN LotSize := 1; IF IsMfgItem THEN BEGIN IF "Lot Size" <> 0 THEN LotSize := "Lot Size"; MfgItemQtyBase := CostCalcMgt.CalcQtyAdjdForBOMScrap(LotSize,"Scrap %"); CalcRtngCost("Routing No.",MfgItemQtyBase,SLCap,SLSub,SLCapOvhd); CalcProdBOMCost( Item,"Production BOM No.","Routing No.", MfgItemQtyBase,TRUE,Level,SLMat,RUMat,RUCap,RUSub,RUCapOvhd,RUMfgOvhd); SLMfgOvhd := CostCalcMgt.CalcOvhdCost( SLMat + SLCap + SLSub + SLCapOvhd, "Indirect Cost %","Overhead Rate",LotSize); "Last Unit Cost Calc. Date" := CalculationDate; END ELSE BEGIN SLMat := "Unit Cost"; RUMat := "Unit Cost"; END; "Single-Level Material Cost" := CalcCostPerUnit(SLMat,LotSize); "Single-Level Capacity Cost" := CalcCostPerUnit(SLCap,LotSize); "Single-Level Subcontrd. Cost" := CalcCostPerUnit(SLSub,LotSize); "Single-Level Cap. Ovhd Cost" := CalcCostPerUnit(SLCapOvhd,LotSize); "Single-Level Mfg. Ovhd Cost" := CalcCostPerUnit(SLMfgOvhd,LotSize); "Rolled-up Material Cost" := CalcCostPerUnit(RUMat,LotSize); "Rolled-up Capacity Cost" := CalcCostPerUnit(RUCap + SLCap,LotSize); "Rolled-up Subcontracted Cost" := CalcCostPerUnit(RUSub + SLSub,LotSize); "Rolled-up Cap. Overhead Cost" := CalcCostPerUnit(RUCapOvhd + SLCapOvhd,LotSize); "Rolled-up Mfg. Ovhd Cost" := CalcCostPerUnit(RUMfgOvhd + SLMfgOvhd,LotSize); "Standard Cost" := "Single-Level Material Cost" + "Single-Level Capacity Cost" + "Single-Level Subcontrd. Cost" + "Single-Level Cap. Ovhd Cost" + "Single-Level Mfg. Ovhd Cost"; END; TempItem := Item; TempItem.INSERT;
CalcRtngCost(RtngHeaderNo : Code[20];MfgItemQtyBase : Decimal;VAR SLCap : Decimal;VAR SLSub : Decimal;VAR SLCapOvhd : Decimal) IF RtngHeaderNo = '' THEN EXIT; RtngVersionCode := VersionMgt.GetAndTestCertifiedRtngVersion(RtngHeader,RtngVersion,RtngHeaderNo,CalculationDate,LogErrors); TestRtngVersionIsCertified(RtngVersionCode,RtngHeader,RtngVersion); IF CheckRouting.NeedsCalculation(RtngHeader,RtngVersionCode) THEN CheckRouting.Calculate(RtngHeader,RtngVersionCode); WITH RtngLine DO BEGIN SETRANGE("Routing No.",RtngHeaderNo); SETRANGE("Version Code",RtngVersionCode); IF FIND('-') THEN REPEAT IF (Type = Type::"Work Center") AND ("No." <> '') THEN WorkCenter.GET("No.") ELSE CLEAR(WorkCenter); UnitCost := "Unit Cost per"; CalcRtngCostPerUnit(Type,"No.",DirUnitCost,IndirCostPct,OvhdRate,UnitCost,UnitCostCalculation); CostTime := CostCalcMgt.CalcCostTime( MfgItemQtyBase, "Setup Time","Setup Time Unit of Meas. Code", "Run Time","Run Time Unit of Meas. Code","Lot Size", "Scrap Factor % (Accumulated)","Fixed Scrap Qty. (Accum.)", "Work Center No.",UnitCostCalculation,MfgSetup."Cost Incl. Setup", "Concurrent Capacities"); IF (Type = Type::"Work Center") AND (WorkCenter."Subcontractor No." <> '') THEN IncrCost(SLSub,DirUnitCost,CostTime) ELSE IncrCost(SLCap,DirUnitCost,CostTime); IncrCost(SLCapOvhd,CostCalcMgt.CalcOvhdCost(DirUnitCost,IndirCostPct,OvhdRate,1),CostTime); UNTIL NEXT = 0; END;
CalcRtngCostPerUnit(Type : 'Work Center,Machine Center, ';No : Code[20];VAR DirUnitCost : Decimal;VAR IndirCostPct : Decimal;VAR OvhdRa CASE Type OF Type::"Work Center": GetWorkCenter(No,WorkCenter); Type::"Machine Center": GetMachineCenter(No,MachineCenter); END; CostCalcMgt.RoutingCostPerUnit2(Type,DirUnitCost,IndirCostPct,OvhdRate,UnitCost,UnitCostCalculation,WorkCenter,MachineCenter);
CU 5836 Cost Calculation ManagementRoutingCostPerUnit(Type : 'Work Center,Machine Center, ';No : Code[20];VAR DirUnitCost : Decimal;VAR IndirCostPct : Decimal;VAR OvhdRat CASE Type OF Type::"Work Center": WorkCenter.GET(No); Type::"Machine Center": MachineCenter.GET(No); END; RoutingCostPerUnit2(Type,DirUnitCost,IndirCostPct,OvhdRate,UnitCost,UnitCostCalculation,WorkCenter,MachineCenter);
RoutingCostPerUnit2(Type : 'Work Center,Machine Center, ';VAR DirUnitCost : Decimal;VAR IndirCostPct : Decimal;VAR OvhdRate : Decimal;V UnitCostCalculation := UnitCostCalculation::Time; CASE Type OF Type::"Work Center": BEGIN UnitCostCalculation := WorkCenter."Unit Cost Calculation"; IndirCostPct := WorkCenter."Indirect Cost %"; OvhdRate := WorkCenter."Overhead Rate"; IF WorkCenter."Specific Unit Cost" THEN BEGIN DirUnitCost := CalcDirUnitCost(UnitCost,OvhdRate,IndirCostPct); END ELSE BEGIN DirUnitCost := WorkCenter."Direct Unit Cost"; UnitCost := WorkCenter."Unit Cost"; END; END; Type::"Machine Center": BEGIN MachineCenter.TESTFIELD("Work Center No."); DirUnitCost := MachineCenter."Direct Unit Cost"; OvhdRate := MachineCenter."Overhead Rate"; IndirCostPct := MachineCenter."Indirect Cost %"; UnitCost := MachineCenter."Unit Cost"; END; END;
0
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