To solve this optimization problem, we will first define the variables and parameters involved. Let's denote:

- $F$ as the number of fridges to be fixed,
- $O$ as the number of ovens to be fixed.

The objective is to maximize earnings, given by $100F + 125O$.

The constraints are based on the time available for inspection and fixing:
1. Inspection time constraint: $20F + 30O \leq 1000$
2. Fixing time constraint: $30F + 15O \leq 800$

All variables ($F$, $O$) must be non-negative since they represent quantities of items.

Here is the Gurobi code to solve this linear programming problem:

```python
from gurobipy import *

# Create a new model
m = Model("Repairman_Optimization")

# Define the variables
F = m.addVar(lb=0, vtype=GRB.INTEGER, name="Number_of_Fridges")
O = m.addVar(lb=0, vtype=GRB.INTEGER, name="Number_of_Ovens")

# Set the objective function: maximize earnings
m.setObjective(100*F + 125*O, GRB.MAXIMIZE)

# Add constraints
m.addConstr(20*F + 30*O <= 1000, "Inspection_Time_Constraint")
m.addConstr(30*F + 15*O <= 800, "Fixing_Time_Constraint")

# Optimize the model
m.optimize()

# Print the results
if m.status == GRB.OPTIMAL:
    print("Optimal solution found.")
    print(f"Number of Fridges: {F.x}")
    print(f"Number of Ovens: {O.x}")
    print(f"Maximum Earnings: ${100*F.x + 125*O.x}")
else:
    print("No optimal solution found. The model is infeasible or unbounded.")
```