Report abuse

1
# Cashboard invoice templates for hiding hourly cost

Create this as html_invoice_no_hourly

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
<style type="text/css">
  {% include 'css_document' %}
</style>

<div class="left_aligned">
  <h1 id="doc_title">{{ account.company.name }}</h1>
  <div class="subheader">Invoice {{ invoice.number }}</div>
</div>


<div id="company_info" class="right_aligned">
  <p>
    {% include 'company' for account.company %}
  </p>
</div>

<div class="clear"></div>

{{ # DETAILS }}

<div class="document_details">
  {{ # LEFT DETAILS }}
  <div class="left_aligned">
    <table class="formContent">
      <tr>
        <td style="vertical-align:top;">{{ 'Client' | make_label }}</td>
        <td>
          {% include 'client' for invoice.client %}
        </td>
      </tr>
      <tr>
        {{ # INVOICE DATE }}
        <td>{{ 'Invoice Date' | make_label }}</td>
        <td style="padding-right:10px;">
          {{ invoice.invoice_date | format_date }}
          <span class="info noprint">
            ({{ invoice.invoice_date | format_date_in_english }})
          </span>
        </td>
      </tr>
      <tr>
        {{ # INVOICE DUE DATE }}
        <td>{{ 'Due Date' | make_label }}</td>
        <td style="padding-right:10px;">
          {{ invoice.due_date | format_date }}
          <span class="info noprint">
            ({{ invoice.due_date | format_date_in_english }})
          </span>
        </td>
      </tr>
    </table>
  </div>

  {{ # RIGHT DETAILS }}

  <div class="right_aligned">
    {% if invoice.has_been_paid %}
      {% if invoice.paid_on != null %}
      <span class="bigger">PAID IN FULL ON<br/>{{ invoice.paid_on | format_date }}</span>
      {% endif %}
    {% else %}
      <span class="bigger">TOTAL DUE ON<br/> {{ invoice.due_date | format_date }}</span><br/>
    {% endif %}

    <div id="total_amount">
      {{ invoice.total | format_money }}
    </div>

    {% if invoice.payment_count > 0 && invoice.has_been_paid == false %}
      <span class="info">Balance {{ invoice.balance | format_money }}</span>
    {% endif %}


  </div>

  <div class="clear"></div>
</div>

<div class="clear"></div>


{{ # NOTES }}

{% if invoice.notes != blank %}
  <h2>Notes</h2>
  <div class="content_pad">
    {{ invoice.notes | format_text }}
  </div>
{% endif %}


{{ # INVOICE ITEMS TABLE }}

<table class="list" cellpadding="0" cellspacing="0">
  <colgroup>
    <col />
    <col style="width:130px;" />
  </colgroup>
  <tr>
    <th class="first">Item Description</th>
    <th class="numeric last">Total</th>
  </tr>
  {% if invoice.line_items == null %} 
    <tbody id="no_items_body">
      <tr>
        <td colspan="2" class="first last info">
          No items have been created for this invoice yet.
        </td>
      </tr>
    </tbody>
  {% else %}
    <tbody id="item_list_body">
      {{ # INVOICE ITEM LOOP }}

      {{ # First, display items that don't belong to any project }}
      {% for item in invoice.items_ad_hoc %}
        {% include 'invoice_row_no_hourly' for item %}
      {% endfor %}
      
      {{ # Now, display items grouped by project that belong to one }}
      {{ # This can contain items invoiced from an estimate as well }}
      {% for project in invoice.items_by_project %}
        <tr class="summary project">
          <td colspan="2" class="first last">
            {{ project[0] }}
          </td>
        </tr>
        {% for item in project[1] %}
          {% include 'invoice_row_no_hourly' for item %}
        {% endfor %}
      {% endfor %}
      
      
    </tbody>
  {% endif %}
  
  {{ # ITEM FOOTER }}
  
  <tbody id="item_list_footer">
    {{ # ITEM TOTAL }}
    <tr class="summary first">
      <td class="first numeric"><b>Item Total</b></td>
      <td class="numeric money_gain last">{{ invoice.item_actual | format_money }}</td>
    </tr>
    {% if invoice.sales_tax != null %}
      {{ # SALES TAX }}
      <tr class="summary">
        <td class="first numeric">
          <b>Tax</b> - {{ invoice.sales_tax }}%
        </td>
        <td class="numeric money_gain last">{{ invoice.tax_cost | format_money }}</td>
      </tr>
    {% endif %}
    {% if invoice.sales_tax_2 != null %}
      {{ # SALES TAX 2 }}
      <tr class="summary">
        <td class="first numeric">
          <b>Tax 2</b> - {{ invoice.sales_tax_2 }}%
        </td>
        <td class="numeric money_gain last">{{ invoice.tax_cost_2 | format_money }}</td>
      </tr>
    {% endif %}

    {{ # EARLY DISCOUNT }}
    {% if invoice.should_apply_early_discount == true %}
      <tr class="summary">
        <td class="first numeric">
          <b>Early Payment Discount</b> - {{ invoice.discount_percentage }}% every {{ invoice.early_period_in_days }} days paid early
        </td>
        <td class="numeric money_gain last">
          {{ invoice.early_discount | format_money }}
        </td>
      </tr>
    {% endif %}
    
    {{ # OVERALL DISCOUNT }}
    {% if invoice.should_apply_flat_discount == true %}
      <tr class="summary">
        <td class="first numeric">
          <b>Discount</b> - {{ invoice.discount_percentage }}%
        </td>
        <td class="numeric money_gain last">
          {{ invoice.flat_discount | format_money }}
        </td>
      </tr>
    {% endif %}

    {{ # LATE FEE }}
    {% if invoice.should_apply_late_fee == true %}
      <tr class="summary">
        <td class="first numeric">
          <b>Late Fee</b> - {{ invoice.late_percentage }}% every {{ invoice.late_period_in_days }} days past due
        </td>
        <td class="numeric money_gain last">{{ invoice.late_fee | format_money }}</td>
      </tr>
    {% endif %}


    {% if invoice.payments %}
      {{ # INVOICE TOTAL }}
      <tr class="summary">
        <td class="first numeric">Invoice Total</td>
        <td class="numeric money_gain last">{{ invoice.total | format_money }}</td>
      </tr>
      {% for payment in invoice.payments %}
        {{ # PAYMENTS }}
        <tr class="summary">
          <td class="first numeric">
            Payment: {{ payment.number }} - {{ payment.created_on | format_date }}
          </td>
          <td class="numeric money_loss last">
            {{ payment.amount | format_money }}
          </td>
        </tr>
      {% endfor %}
    {% endif %}

    {{ # FINAL TOTAL }}
    <tr class="footer">
      {% if invoice.has_been_paid %}
        <td class="first numeric last">
          <span class="money_gain">Paid in full</span>
        </td>
      {% else %}
        <td class="first numeric">Total Due</td>
        <td class="numeric last">
          <span class="money_gain">{{ invoice.balance | format_money }}</span>
        </td>
      {% endif %}
    </tr>
  </tbody>
  
</table>

Create this as invoice_row_no_hourly

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84

{% assign time_entry_class = '' %}

{% if invoice.include_time_entries || invoice.include_expenses %}
  {% assign time_entry_class = 'line' %}
{% endif %}

<tr class="{% cycle 'parent_row': 'even', 'odd' %} {{time_entry_class}}">
  <td class="first">
    {{ item.title }}
    {% if item.description != blank %}
      <br/>
      <span class="info">
      {{ item.description | format_text }}
      </span>
    {% endif %}
  </td>
  <td class="numeric money_gain last" id="">
    {{ item.total | format_money }}
  </td>
</tr>

{{ # TIME ENTRY DISPLAY }}
{% if item.has_time_entries_shown %}
  <tr class="{% cycle 'child_row': 'even', 'odd' %}">
    <td class="first last" colspan="6">
      <table class="inner">
        <colgroup>
          <col style="width:50px;" />
          <col style="width:120px;" />
          <col />
        </colgroup>
        {% for entry in item.time_entries %}
          <tr class="info">
            <td class="numeric" style="vertical-align:top;white-space:nowrap;">
              {{ entry.created_on | format_date }}
            </td>
            <td style="padding-left:10px !important; vertical-align:top;">{{ entry.person_name }}</td>
            <td style="vertical-align:top;">
              {% if entry.description != blank %}
                {{ entry.description | format_text }}
              {% else %}
                &nbsp;
              {% endif %}
            </td>
          </tr>
        {% endfor %}
      </table>
    </td>
  </tr>
{% endif %}

{{ # EXPENSE DISPLAY }}
{% if item.has_expenses_shown %}
  <tr class="{% cycle 'child_row': 'even', 'odd' %}">
    <td class="first last" colspan="6">
      <table class="inner">
        <colgroup>
          <col style="width:50px;" />
          <col style="width:70px;" />
          <col style="width:120px;" />
          <col />
        </colgroup>
        {% for expense in item.expenses %}
          <tr class="info">
            <td class="numeric" style="vertical-align:top;white-space:nowrap;">
              {{ expense.created_on | format_date }}
            </td>
            <td class="numeric" style="vertical-align:top;">{{ expense.amount | format_money }}</td>
            <td style="padding-left:10px !important; vertical-align:top;">{{ expense.person_name }}</td>
            <td style="vertical-align:top;">
              {% if expense.description != blank %}
                {{ expense.description | format_text }}
              {% else %}
                &nbsp;
              {% endif %}
            </td>
          </tr>
        {% endfor %}
      </table>
    </td>
  </tr>
{% endif %}