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.

208 lines
9.8 KiB

  1. ## -*- coding: utf-8 -*-
  2. <!DOCTYPE html SYSTEM
  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml">
  5. <head>
  6. <style type="text/css">
  7. .overflow_ellipsis {
  8. text-overflow: ellipsis;
  9. overflow: hidden;
  10. white-space: nowrap;
  11. }
  12. .open_invoice_previous_line {
  13. font-style: italic;
  14. }
  15. .percent_line {
  16. font-style: italic;
  17. }
  18. .amount {
  19. text-align:right;
  20. }
  21. .classif_title {
  22. text-align:right;
  23. }
  24. .classif{
  25. width: ${700/len(ranges)}px;
  26. }
  27. .total{
  28. font-weight:bold;
  29. }
  30. ${css}
  31. </style>
  32. </head>
  33. <%!
  34. def amount(text):
  35. # replace by a non-breaking hyphen (it will not word-wrap between hyphen and numbers)
  36. return text.replace('-', '&#8209;')
  37. %>
  38. <body>
  39. <%setLang(user.lang)%>
  40. <div class="act_as_table data_table">
  41. <div class="act_as_row labels">
  42. <div class="act_as_cell">${_('Chart of Account')}</div>
  43. <div class="act_as_cell">${_('Fiscal Year')}</div>
  44. <div class="act_as_cell">
  45. %if filter_form(data) == 'filter_date':
  46. ${_('Dates Filter')}
  47. %else:
  48. ${_('Periods Filter')}
  49. %endif
  50. </div>
  51. <div class="act_as_cell">${_('Clearance Date')}</div>
  52. <div class="act_as_cell">${_('Accounts Filter')}</div>
  53. <div class="act_as_cell">${_('Target Moves')}</div>
  54. </div>
  55. <div class="act_as_row">
  56. <div class="act_as_cell">${ chart_account.name }</div>
  57. <div class="act_as_cell">${ fiscalyear.name if fiscalyear else '-' }</div>
  58. <div class="act_as_cell">
  59. ${_('From:')}
  60. %if filter_form(data) == 'filter_date':
  61. ${formatLang(start_date, date=True) if start_date else u'' }
  62. %else:
  63. ${start_period.name if start_period else u''}
  64. %endif
  65. ${_('To:')}
  66. %if filter_form(data) == 'filter_date':
  67. ${ formatLang(stop_date, date=True) if stop_date else u'' }
  68. %else:
  69. ${stop_period.name if stop_period else u'' }
  70. %endif
  71. </div>
  72. <div class="act_as_cell">${ formatLang(date_until, date=True) }</div>
  73. <div class="act_as_cell">
  74. %if partner_ids:
  75. ${_('Custom Filter')}
  76. %else:
  77. ${ display_partner_account(data) }
  78. %endif
  79. </div>
  80. <div class="act_as_cell">${ display_target_move(data) }</div>
  81. </div>
  82. </div>
  83. <%
  84. balance_list = []
  85. classif_list = []
  86. classif_list_2 = []
  87. %>
  88. %for account in objects:
  89. %if aged_open_inv[account.id] and partners_order[account.id]:
  90. <div class="account_title bg" style="width: 1080px; margin-top: 20px; font-size: 12px;">${account.code} - ${account.name}</div>
  91. %for partner_name, p_id, p_ref, p_name in partners_order[account.id]:
  92. <div class="act_as_table list_table" style="margin-top: 5px;">
  93. <div class="act_as_caption account_title">
  94. ${partner_name or _('No Partner')}
  95. </div>
  96. <div class="act_as_thead">
  97. <div class="act_as_row labels">
  98. ## date
  99. <div class="act_as_cell first_column" style="width: 60px;">${_('Date')}</div>
  100. ## move
  101. <div class="act_as_cell" style="width: 100px;">${_('Entry')}</div>
  102. ## journal
  103. <div class="act_as_cell" style="width: 70px;">${_('Journal')}</div>
  104. ## label
  105. <div class="act_as_cell" style="width: 180px;">${_('Label')}</div>
  106. ## reconcile
  107. <div class="act_as_cell" style="width: 80px;">${_('Rec.')}</div>
  108. ## maturity
  109. <div class="act_as_cell" style="width: 60px;">${_('Due Date')}</div>
  110. ## balance
  111. <div class="act_as_cell amount" style="width: 80px;">${_('Amount')}</div>
  112. ## Classifications
  113. %for title in ranges_titles:
  114. <div class="act_as_cell classif classif_title">${title}</div>
  115. %endfor
  116. </div>
  117. </div>
  118. <div class="act_as_tbody">
  119. %for line in aged_open_inv[account.id][p_id].get('lines', []):
  120. <div class="act_as_row lines ${line.get('is_from_previous_periods') and 'open_invoice_previous_line' or ''} ${line.get('is_clearance_line') and 'clearance_line' or ''}">
  121. ## date
  122. <div class="act_as_cell first_column">${formatLang(line.get('ldate') or '', date=True)}</div>
  123. ## move
  124. <div class="act_as_cell">${line.get('move_name') or ''}</div>
  125. ## journal
  126. <div class="act_as_cell">${line.get('jcode') or ''}</div>
  127. ## label
  128. <div class="act_as_cell">${line.get('lname')}</div>
  129. ## reconcile
  130. <div class="act_as_cell">${line.get('rec_name') or ''}</div>
  131. ## maturity date
  132. <div class="act_as_cell">${formatLang(line.get('date_maturity') or '', date=True)}</div>
  133. ## balance
  134. <div class="act_as_cell amount">${formatLang(line.get('balance') or 0.0) | amount }</div>
  135. ## classifications
  136. %for classif in ranges:
  137. <div class="act_as_cell classif amount">
  138. ${formatLang(line.get(classif) or 0.0) | amount }
  139. </div>
  140. %endfor
  141. </div>
  142. %endfor # end of the loop on lines
  143. <div class="act_as_row labels">
  144. <div class="act_as_cell total">${_('Total Partner')}</div>
  145. <div class="act_as_cell"></div>
  146. <div class="act_as_cell"></div>
  147. <div class="act_as_cell"></div>
  148. <div class="act_as_cell"></div>
  149. <div class="act_as_cell"></div>
  150. <div class="act_as_cell amount classif total">${formatLang(aged_open_inv[account.id][p_id]['balance']) | amount}</div>
  151. %for classif in ranges:
  152. <div class="act_as_cell amount classif total">${formatLang(aged_open_inv[account.id][p_id][classif]) | amount }</div>
  153. %endfor
  154. </div>
  155. </div>
  156. %endfor # end of the loop on partners
  157. <div class="act_as_row labels">
  158. <div class="act_as_cell total account_title bg">${_('Total')}</div>
  159. <div class="act_as_cell"></div>
  160. <div class="act_as_cell"></div>
  161. <div class="act_as_cell"></div>
  162. <div class="act_as_cell"></div>
  163. <div class="act_as_cell"></div>
  164. <div class="act_as_cell amount classif total account_title bg">${formatLang(aged_open_inv[account.id]['balance']) | amount}</div>
  165. <%
  166. balance_list.append(aged_open_inv[account.id]['balance'])
  167. %>
  168. %for classif in ranges:
  169. <div class="act_as_cell amount classif total account_title bg">
  170. ${formatLang(aged_open_inv[account.id][classif]) | amount }
  171. </div>
  172. <%
  173. classif_list.append(aged_open_inv[account.id][classif])
  174. %>
  175. %endfor
  176. </div>
  177. %endif
  178. %endfor # end of the loop on accounts
  179. <br/>
  180. <%
  181. classif_list = [classif_list[i:i+6] for i in range(0, len(classif_list), 6)]
  182. for i in range(6):
  183. classif_list_2.append([line[i] for line in classif_list])
  184. %>
  185. <div class="act_as_row labels">
  186. <div class="act_as_cell total account_title bg">${_('Overall Total')}</div>
  187. <div class="act_as_cell"></div>
  188. <div class="act_as_cell"></div>
  189. <div class="act_as_cell"></div>
  190. <div class="act_as_cell"></div>
  191. <div class="act_as_cell"></div>
  192. <div class="act_as_cell amount classif total account_title bg">${formatLang(sum(balance_list)) | amount}</div>
  193. %for cf in classif_list_2:
  194. <div class="act_as_cell amount classif total account_title bg">${formatLang(sum(cf)) | amount}</div>
  195. %endfor
  196. </div>
  197. </body>
  198. </html>