You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

243 lines
13 KiB

  1. ## -*- coding: utf-8 -*-
  2. <!DOCTYPE html SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <style type="text/css">
  6. .overflow_ellipsis {
  7. text-overflow: ellipsis;
  8. overflow: hidden;
  9. white-space: nowrap;
  10. }
  11. ${css}
  12. </style>
  13. </head>
  14. <body>
  15. <%!
  16. def amount(text):
  17. return text.replace('-', '&#8209;') # replace by a non-breaking hyphen (it will not word-wrap between hyphen and numbers)
  18. %>
  19. <%setLang(user.lang)%>
  20. <%
  21. initial_balance_text = {'initial_balance': _('Computed'), 'opening_balance': _('Opening Entries'), False: _('No')}
  22. %>
  23. %if amount_currency(data):
  24. <div class="act_as_table data_table" style="width: 1205px;">
  25. %else:
  26. <div class="act_as_table data_table" style="width: 1100px;">
  27. %endif
  28. <div class="act_as_row labels">
  29. <div class="act_as_cell">${_('Chart of Account')}</div>
  30. <div class="act_as_cell">${_('Fiscal Year')}</div>
  31. <div class="act_as_cell">
  32. %if filter_form(data) == 'filter_date':
  33. ${_('Dates Filter')}
  34. %else:
  35. ${_('Periods Filter')}
  36. %endif
  37. </div>
  38. <div class="act_as_cell">${_('Accounts Filter')}</div>
  39. <div class="act_as_cell">${_('Target Moves')}</div>
  40. <div class="act_as_cell">${_('Initial Balance')}</div>
  41. </div>
  42. <div class="act_as_row">
  43. <div class="act_as_cell">${ chart_account.name }</div>
  44. <div class="act_as_cell">${ fiscalyear.name if fiscalyear else '-' }</div>
  45. <div class="act_as_cell">
  46. ${_('From:')}
  47. %if filter_form(data) == 'filter_date':
  48. ${formatLang(start_date, date=True) if start_date else u'' }
  49. %else:
  50. ${start_period.name if start_period else u''}
  51. %endif
  52. ${_('To:')}
  53. %if filter_form(data) == 'filter_date':
  54. ${ formatLang(stop_date, date=True) if stop_date else u'' }
  55. %else:
  56. ${stop_period.name if stop_period else u'' }
  57. %endif
  58. </div>
  59. <div class="act_as_cell">
  60. %if accounts(data):
  61. ${', '.join([account.code for account in accounts(data)])}
  62. %else:
  63. ${_('All')}
  64. %endif
  65. </div>
  66. <div class="act_as_cell">${ display_target_move(data) }</div>
  67. <div class="act_as_cell">${ initial_balance_text[initial_balance_mode] }</div>
  68. </div>
  69. </div>
  70. <!-- we use div with css instead of table for tabular data because div do not cut rows at half at page breaks -->
  71. %for account in objects:
  72. <%
  73. display_initial_balance = account.init_balance and (account.init_balance.get('debit', 0.0) != 0.0 or account.init_balance.get('credit', 0.0) != 0.0)
  74. display_ledger_lines = account.ledger_lines
  75. %>
  76. %if display_account_raw(data) == 'all' or (display_ledger_lines or display_initial_balance):
  77. <%
  78. cumul_debit = 0.0
  79. cumul_credit = 0.0
  80. cumul_balance = 0.0
  81. cumul_balance_curr = 0.0
  82. %>
  83. <div class="act_as_table list_table" style="margin-top: 10px;">
  84. <div class="act_as_caption account_title">
  85. ${account.code} - ${account.name}
  86. </div>
  87. <div class="act_as_thead">
  88. <div class="act_as_row labels" style="page-break-inside: avoid">
  89. ## date
  90. <div class="act_as_cell first_column" style="width: 50px;">${_('Date')}</div>
  91. ## period
  92. <div class="act_as_cell" style="width: 50px;">${_('Period')}</div>
  93. ## move
  94. <div class="act_as_cell" style="width: 100px;">${_('Entry')}</div>
  95. ## journal
  96. <div class="act_as_cell" style="width: 70px;">${_('Journal')}</div>
  97. ## account code
  98. <div class="act_as_cell" style="width: 65px;">${_('Account')}</div>
  99. ## partner
  100. <div class="act_as_cell" style="width: 140px;">${_('Partner')}</div>
  101. ## move reference
  102. <div class="act_as_cell" style="width: 140px;">${_('Reference')}</div>
  103. ## label
  104. <div class="act_as_cell" style="width: 160px;">${_('Label')}</div>
  105. ## counterpart
  106. <div class="act_as_cell" style="width: 100px;">${_('Counter part')}</div>
  107. ## debit
  108. <div class="act_as_cell amount" style="width: 75px;">${_('Debit')}</div>
  109. ## credit
  110. <div class="act_as_cell amount" style="width: 75px;">${_('Credit')}</div>
  111. ## balance cumulated
  112. <div class="act_as_cell amount" style="width: 75px;">${_('Cumul. Bal.')}</div>
  113. %if amount_currency(data):
  114. ## currency balance
  115. <div class="act_as_cell amount sep_left" style="width: 75px;">${_('Curr. Balance')}</div>
  116. ## curency code
  117. <div class="act_as_cell amount" style="width: 30px; text-align: right;">${_('Curr.')}</div>
  118. %endif
  119. </div>
  120. </div>
  121. <div class="act_as_tbody" style="page-break-inside: avoid">
  122. %if display_initial_balance:
  123. <%
  124. cumul_debit = account.init_balance.get('debit') or 0.0
  125. cumul_credit = account.init_balance.get('credit') or 0.0
  126. cumul_balance = account.init_balance.get('init_balance') or 0.0
  127. cumul_balance_curr = account.init_balance.get('init_balance_currency') or 0.0
  128. %>
  129. <div class="act_as_row initial_balance">
  130. ## date
  131. <div class="act_as_cell first_column"></div>
  132. ## period
  133. <div class="act_as_cell"></div>
  134. ## move
  135. <div class="act_as_cell"></div>
  136. ## journal
  137. <div class="act_as_cell"></div>
  138. ## account code
  139. <div class="act_as_cell"></div>
  140. ## partner
  141. <div class="act_as_cell"></div>
  142. ## move reference
  143. <div class="act_as_cell"></div>
  144. ## label
  145. <div class="act_as_cell">${_('Initial Balance')}</div>
  146. ## counterpart
  147. <div class="act_as_cell"></div>
  148. ## debit
  149. <div class="act_as_cell amount">${formatLang(account.init_balance.get('debit')) | amount}</div>
  150. ## credit
  151. <div class="act_as_cell amount">${formatLang(account.init_balance.get('credit')) | amount}</div>
  152. ## balance cumulated
  153. <div class="act_as_cell amount" style="padding-right: 1px;">${formatLang(cumul_balance) | amount }</div>
  154. %if amount_currency(data):
  155. ## currency balance
  156. <div class="act_as_cell amount sep_left">${formatLang(cumul_balance_curr) | amount }</div>
  157. ## curency code
  158. <div class="act_as_cell amount"></div>
  159. %endif
  160. </div>
  161. %endif
  162. %for line in account.ledger_lines:
  163. <%
  164. cumul_debit += line.get('debit') or 0.0
  165. cumul_credit += line.get('credit') or 0.0
  166. cumul_balance_curr += line.get('amount_currency') or 0.0
  167. cumul_balance += line.get('balance') or 0.0
  168. label_elements = [line.get('lname') or '']
  169. if line.get('invoice_number'):
  170. label_elements.append("(%s)" % (line['invoice_number'],))
  171. label = ' '.join(label_elements)
  172. %>
  173. <div class="act_as_row lines" style="page-break-inside: avoid">
  174. ## date
  175. <div class="act_as_cell first_column">${formatLang(line.get('ldate') or '', date=True)}</div>
  176. ## period
  177. <div class="act_as_cell">${line.get('period_code') or ''}</div>
  178. ## move
  179. <div class="act_as_cell">${line.get('move_name') or ''}</div>
  180. ## journal
  181. <div class="act_as_cell">${line.get('jcode') or ''}</div>
  182. ## account code
  183. <div class="act_as_cell">${account.code}</div>
  184. ## partner
  185. <div class="act_as_cell overflow_ellipsis">${line.get('partner_name') or ''}</div>
  186. ## move reference
  187. <div class="act_as_cell">${line.get('lref') or ''}</div>
  188. ## label
  189. <div class="act_as_cell">${label}</div>
  190. ## counterpart
  191. <div class="act_as_cell">${line.get('counterparts') or ''}</div>
  192. ## debit
  193. <div class="act_as_cell amount">${ formatLang(line.get('debit', 0.0)) | amount }</div>
  194. ## credit
  195. <div class="act_as_cell amount">${ formatLang(line.get('credit', 0.0)) | amount }</div>
  196. ## balance cumulated
  197. <div class="act_as_cell amount" style="padding-right: 1px;">${ formatLang(cumul_balance) | amount }</div>
  198. %if amount_currency(data):
  199. ## currency balance
  200. <div class="act_as_cell amount sep_left">${formatLang(line.get('amount_currency') or 0.0) | amount }</div>
  201. ## curency code
  202. <div class="act_as_cell amount" style="text-align: right;">${line.get('currency_code') or ''}</div>
  203. %endif
  204. </div>
  205. %endfor
  206. </div>
  207. <div class="act_as_table list_table" style="page-break-inside: avoid">
  208. <div class="act_as_row labels" style="font-weight: bold;">
  209. ## date
  210. <div class="act_as_cell first_column" style="width: 615px;">${account.code} - ${account.name}</div>
  211. <div class="act_as_cell" style="width: 260px;">${_("Cumulated Balance on Account")}</div>
  212. ## debit
  213. <div class="act_as_cell amount" style="width: 75px;">${ formatLang(cumul_debit) | amount }</div>
  214. ## credit
  215. <div class="act_as_cell amount" style="width: 75px;">${ formatLang(cumul_credit) | amount }</div>
  216. ## balance cumulated
  217. <div class="act_as_cell amount" style="width: 75px; padding-right: 1px;">${ formatLang(cumul_balance) | amount }</div>
  218. %if amount_currency(data):
  219. %if account.currency_id:
  220. ## currency balance
  221. <div class="act_as_cell amount sep_left" style="width: 75px;">${formatLang(cumul_balance_curr) | amount }</div>
  222. %else:
  223. <div class="act_as_cell amount sep_left" style="width: 75px;">-</div>
  224. %endif
  225. ## curency code
  226. <div class="act_as_cell amount" style="width: 30px; text-align: right;"></div>
  227. %endif
  228. </div>
  229. </div>
  230. </div>
  231. %endif
  232. %endfor
  233. </body>
  234. </html>