I have a database where I'm trying to ensure referential integrity using foreign keys but I'm unsure how to proceed:

There are four tables: Company, Employee, Order and BillingCode.

A company has multiple employees, and each of those employees can place orders.
Each order must be allocated a billing code - which is taken from a lookup table. 
Each company can have multiple billing codes.  

An employee can only use a billing code thats allocated to their company.

Basic Diagram: <http://i61.tinypic.com/21bm937.png>

```
CREATE TABLE [dbo].[BillingCodes](
    [BillingId] [int] NOT NULL,
    [CompanyId] [int] NOT NULL,
    [BillingCode] [varchar](10) NOT NULL,
 CONSTRAINT [PK_BillingCodes] PRIMARY KEY CLUSTERED 
(
    [BillingId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Company](
    [CompanyId] [int] NOT NULL,
    [CompanyName] [varchar](50) NOT NULL,
 CONSTRAINT [PK_Company] PRIMARY KEY CLUSTERED 
(
    [CompanyId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Employees](
    [EmployeeId] [int] NOT NULL,
    [CompanyId] [int] NOT NULL,
    [Name] [varchar](50) NOT NULL
 CONSTRAINT [PK_Employees] PRIMARY KEY CLUSTERED 
(
    [EmployeeId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Orders](
    [OrderId] [int] NOT NULL,
    [EmployeeId] [int] NOT NULL,
    [Price] [money] NOT NULL,
    [Qty] [int] NOT NULL,
    [BillingId] [int] NOT NULL,
 CONSTRAINT [PK_Orders] PRIMARY KEY CLUSTERED 
(
    [OrderId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[BillingCodes]  WITH CHECK ADD  CONSTRAINT [FK_BillingCodes_Company] FOREIGN KEY([CompanyId])
REFERENCES [dbo].[Company] ([CompanyId])
GO

ALTER TABLE [dbo].[Employees]  WITH CHECK ADD  CONSTRAINT [FK_Employees_Company] FOREIGN KEY([CompanyId])
REFERENCES [dbo].[Company] ([CompanyId])
GO

ALTER TABLE [dbo].[Orders]  WITH CHECK ADD  CONSTRAINT [FK_Orders_Employees] FOREIGN KEY([EmployeeId])
REFERENCES [dbo].[Employees] ([EmployeeId])
GO

```

How do I ensure that [BillingId] in [Orders] is for the same company as the Employee?

Normally I'd just create a Foreign key between [BillingCodes] and [Orders] on [BillingId] and enforce the [CompanyId] reference in the business layer. Unfortunately in this instance I have a boss who likes to go into the database and correct data manually. So I need to enforce this in the database.

Is my only option to carry the CompanyID over to the orders table, and use a composite foreign key to [BillingCode]? This is a simplified version - there are another 3 tables between [Company] and [Employee], so I'd rather not have [CompanyId] in every table if I don't need to.

Is there an easier way to accomplish this?