Billing Appointments
Can I create an invoice from an appointment
Yes. You can bill appointments by selecting the "invoice" tab on the Event Details mini window (this is the window the comes up when you click on an event in the calendar). Lines created here are added to a new invoice linked to this event. That invoice is also linked to the event's contact and project.
Once lines are added you can close the event window and work on the invoice later, or you can jump right to the invoice by clicking on the green arrow pointing to "Invoice" on the Event Details window.
Extending this
You can take this idea (and the scripts used here) and extend this to bill other entities like time. This takes a bit of work, but two scripts in particular should help...
One an invoice is created you can add lines to it from other contexts (like time) using the script "Create Invoice Line { InvoiceID , ItemID , Qty , Name , PriceEa, Desc , Taxable , Override }"
That is your real worker script to make new invoice lines for an existing invoice.
And "New Invoice" is the basic script for creating a new invoice.