Codeunit 1006 "Copy Job"
Base Application · Microsoft.Projects.Project.Job
Across versions
- BC23-24present
- BC251 events added
- BC262 events added, 1 procedures added
- BC27-28unchanged
- BC292 procedures added
- BC30unchanged
Neighbourhood 7 connected objects and pages
Base Application · Microsoft.Projects.Project.Job · BC23-30 · source at ea08af5e · facts from BC29
Events published
OnAfterCopyJob(var TargetJob: Record Job; SourceJob: Record Job)(integration)OnBeforeCopyJob(SourceJob: Record Job; TargetJobNo: Code[20]; TargetJobDescription: Text[100]; TargetJobSellToCustomer: Code[20]; TargetJobBillToCustomer: Code[20]; CopyDimensions: Boolean; CopyPrices: Boolean; var IsHandled: Boolean)(integration)OnBeforeExchangeJobPlanningLineAmounts(var JobPlanningLine: Record "Job Planning Line"; CurrencyCode: Code[10]; var IsHandled: Boolean)(integration)OnAfterCopyJobTask(var TargetJobTask: Record "Job Task"; SourceJobTask: Record "Job Task"; CopyPrices: Boolean; CopyQuantity: Boolean)(integration)OnAfterCopyJobDimensions(SourceJob: Record Job; var TargetJob: Record Job)(integration)OnAfterCopyJobTaskDimensions(SourceJobTask: Record "Job Task"; TargetJobTask: Record "Job Task")(integration)OnBeforeCopyJobPrices(var SourceJob: Record Job; var TargetJob: Record Job)(integration)- subscribers: Codeunit 7006 “Price Helper - V16” BeforeCopyJobPrices, Codeunit 7019 “Price Helper - V15” BeforeCopyJobPrices
OnBeforeCopyJobTasks(var SourceJob: Record Job; var TargetJob: Record Job; var IsHandled: Boolean; CopyDimensions: Boolean; CopyQuantity: Boolean; CopyPrices: Boolean; JobTaskRangeFrom: Code[20]; JobTaskRangeTo: Code[20]; JobPlanningLineSource: Option; JobLedgerEntryType: Option)(integration)OnCopyJobPlanningLinesOnBeforeModifyTargetJobPlanningLine(var TargetJobPlanningLine: Record "Job Planning Line")(integration)OnCopyJobPlanningLinesOnAfterCopyTargetJobPlanningLine(var TargetJobPlanningLine: Record "Job Planning Line"; SourceJobPlanningLine: Record "Job Planning Line")(integration)OnCopyJobPlanningLinesOnAfterSourceJobPlanningLineSetFilters(var SourceJobPlanningLine: Record "Job Planning Line"; CopyPrices: Boolean)+ BC26 − BC26 (integration)OnCopyJobPlanningLinesOnAfterTargetJobPlanningLineInsert(var TargetJobPlanningLine: Record "Job Planning Line"; SourceJobPlanningLine: Record "Job Planning Line")(integration)OnCopyJobPlanningLinesOnBeforeTargetJobPlanningLineInsert(var TargetJobPlanningLine: Record "Job Planning Line"; SourceJobPlanningLine: Record "Job Planning Line")(integration)OnCopyJobTasksOnBeforeTargetJobTaskInsert(var TargetJobTask: Record "Job Task"; SourceJobTask: Record "Job Task"; var IsHandled: Boolean)(integration)OnCopyJobTasksOnAfterSourceJobTaskSetFilters(var SourceJobTask: Record "Job Task"; SourceJob: Record Job)(integration)OnCopyJobPlanningLinesOnBeforeTargetJobPlanningLineInit(var TargetJobPlanningLine: Record "Job Planning Line"; SourceJobPlanningLine: Record "Job Planning Line"; TargetJobTask: Record "Job Task"; var IsHandled: Boolean)(integration)OnCopyJLEsToJobPlanningLinesOnBeforeValidateQuantity(var TargetJobPlanningLine: Record "Job Planning Line"; var CopyQuantity: Boolean; var IsHandled: Boolean)+ BC25 (integration)OnCopyJobOnBeforeTargetJobInsert(var TargetJob: Record Job; var SourceJob: Record Job)+ BC26 (integration)
Procedures
CopyJob(SourceJob: Record Job; TargetJobNo: Code[20]; TargetJobDescription: Text[100]; TargetJobSellToCustomer: Code[20]; TargetJobBillToCustomer: Code[20])CopyJobTasks(SourceJob: Record Job; TargetJob: Record Job)CopyJobPlanningLines(SourceJobTask: Record "Job Task"; TargetJobTask: Record "Job Task")SetCopyQuantity(CopyQuantity2: Boolean)SetCopyPrices(CopyPrices2: Boolean)SetCopyJobPlanningLineType(JobPlanningLineType2: Option " ",Budget,Billable)SetCopyOptions(CopyPrices2: Boolean; CopyQuantity2: Boolean; CopyDimensions2: Boolean; JobPlanningLineSource2: Option "Job Planning Lines","Job Ledger Entries"; JobPlanningLineType2: Option " ",Budget,Billable; JobLedgerEntryType2: Option " ",Usage,Sale)SetJobTaskRange(JobTaskRangeFrom2: Code[20]; JobTaskRangeTo2: Code[20])SetJobTaskDateRange(JobTaskDateRangeFrom2: Date; JobTaskDateRangeTo2: Date)SetCopyAssignedResources(CopyAssignedResources2: Boolean)+ BC29GetJobTaskDateRange(var JobTaskDateRangeFrom2: Date; var JobTaskDateRangeTo2: Date)+ BC26
Plus 6 local procedures.
Triggers
OnRun
Calls
From the extracted call graph of BC29 (graphify-al on the snapshot checkout): calls whose target is known from a declared type or an Object::"Name" argument. Interface dispatch and calls through events are not counted, so the list is not complete.
- Codeunit 408 “DimensionManagement” (4 calls:
CopyJobDimensions → DefaultDimOnDelete,CopyJobDimensions → DefaultDimOnInsert,CopyJobDimensions → UpdateDefaultDim, …) - Codeunit 1004 “Job Transfer Line” (1 call:
CopyJLEsToJobPlanningLines → FromJobLedgEntryToPlanningLine)
Called by
- Page 1041 “Copy Job Tasks” (5 calls:
OnQueryClosePage → CopyJobTasks,OnQueryClosePage → SetCopyAssignedResources,OnQueryClosePage → SetCopyOptions, …) - Page 1042 “Copy Job Planning Lines” (5 calls:
OnQueryClosePage → CopyJobPlanningLines,OnQueryClosePage → SetCopyJobPlanningLineType,OnQueryClosePage → SetCopyPrices, …) - Page 1040 “Copy Job” (4 calls:
OnQueryClosePage → CopyJob,OnQueryClosePage → SetCopyOptions,OnQueryClosePage → SetJobTaskDateRange, …)
Recent changes
- 2026-07-14 #9315 [Projects] Add Assigned Resources to projects and project tasks (main, BC30, feature)
Ask your agent
Procedure bodies are not stored here (D10). The call sections above are our own, per object, from the BC29 call graph. For a procedure body or the calls of one procedure, ask bc-code-atlas (external, by Stefan Maron, MIT; default corpus w1-28), which the bc-observatory plugin connects: bcatlas_resolve_node(object_type: "codeunit", object_name: "Copy Job"), then bcatlas_get_procedure_body or bcatlas_get_neighbors on the returned id.