I am upgrading some older modules that currently run in BWC. I need to replace some actions that are currently in controller.php, How I do that so they no longer have to run in BWC?
It depends on purpose of existing custom methods inside controller.php:
For methods which define new views you need to create custom layouts and custom views as well.
For methods which modify data to be rendered on some specific view you need to implement such transformations in view's js controller. Eventually you can encapsule the logic into a custom field type if the transformations is focused on a single or few fields.
For methods which modify data to be fetched or stored into db you need to implement such transformations in view's js controller as well, or eventually on a custom field type.
Perhaps you can share content of your controller so we can better guide you.
Definitely the code inside pre_detailview and pre_editview can be turned into a regular sugarLogic Formula.
Methods createHeader and printHTML can be turned into some hbs files and js controllers for custom layouts billable and history.
Methods action_printBillable, action_printHistory, action_getBillable, action_getHistory can be turned into new layouts/views billable and history.
Methods action_pdfExport, createTask, page1, page2 can be converted into a custom SugarPdf class, which is OOTB invoked by regular Print PDF.