account_voucher.py 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297
  1. # -*- coding: utf-8 -*-
  2. from openerp.http import request as r
  3. def get_account_voucher_all():
  4. company_currency_rate = r.env.user.company_id.currency_id.rate
  5. query = '''
  6. SELECT voucher.id,
  7. voucher.number,
  8. voucher.type,
  9. voucher.date,
  10. journal.currency,
  11. voucher.amount,
  12. CASE
  13. WHEN journal.currency IS NULL
  14. THEN voucher.amount
  15. ELSE voucher.amount * (%s / (array_agg(rate.rate ORDER BY rate.name DESC))[1])
  16. END AS amount_currency,
  17. voucher.journal_id,
  18. voucher.reference
  19. FROM account_voucher AS voucher
  20. LEFT JOIN res_store_journal_rel AS journal_rel
  21. ON voucher.journal_id = journal_rel.journal_id
  22. LEFT JOIN account_journal AS journal
  23. ON journal.id = voucher.journal_id
  24. LEFT JOIN res_currency_rate AS rate
  25. ON rate.currency_id = journal.currency
  26. WHERE voucher.state = 'posted'
  27. GROUP BY
  28. voucher.id,
  29. voucher.number,
  30. voucher.type,
  31. voucher.date,
  32. voucher.amount,
  33. journal.name,
  34. journal.currency
  35. '''
  36. r.cr.execute(query,(tuple([company_currency_rate])))
  37. return [
  38. {
  39. 'id': j[0],
  40. 'number': j[1],
  41. 'type': j[2],
  42. 'date': j[3],
  43. 'currency_id': j[4],
  44. 'amount': j[5],
  45. 'amount_currency': j[6],
  46. 'journal_id': j[7],
  47. 'reference': j[8],
  48. } for j in r.cr.fetchall()
  49. ]
  50. def get_account_voucher_customer():
  51. company_currency_rate = r.env.user.company_id.currency_id.rate
  52. query = '''
  53. SELECT voucher.id,
  54. voucher.number,
  55. voucher.type,
  56. voucher.date,
  57. journal.currency,
  58. voucher.amount,
  59. CASE
  60. WHEN journal.currency IS NULL
  61. THEN voucher.amount
  62. ELSE voucher.amount * (%s / (array_agg(rate.rate ORDER BY rate.name DESC))[1])
  63. END AS amount_currency,
  64. voucher.journal_id,
  65. voucher.reference,
  66. journal_rel.store_id,
  67. journal.name,
  68. invoice.origin,
  69. partner.name,
  70. voucher.name,
  71. voucher.company_id,
  72. move.id
  73. --,
  74. --move_line.reconcile_ref
  75. FROM account_voucher AS voucher
  76. LEFT JOIN res_store_journal_rel AS journal_rel
  77. ON voucher.journal_id = journal_rel.journal_id
  78. LEFT JOIN account_journal AS journal
  79. ON journal.id = voucher.journal_id
  80. LEFT JOIN res_currency_rate AS rate
  81. ON rate.currency_id = journal.currency
  82. LEFT JOIN account_invoice AS invoice
  83. ON invoice.number = voucher.reference
  84. LEFT JOIN res_partner AS partner
  85. ON partner.id = voucher.partner_id
  86. LEFT JOIN account_move AS move
  87. ON move.name = voucher.number
  88. --LEFT JOIN account_move_line AS move_line
  89. --on move_line.move_id = move.id
  90. WHERE voucher.state = 'posted'
  91. AND voucher.type = 'receipt'
  92. --AND move_line.reconcile_ref IS NOT NULL
  93. GROUP BY
  94. voucher.id,
  95. voucher.number,
  96. voucher.type,
  97. voucher.date,
  98. voucher.amount,
  99. journal.name,
  100. journal.currency,
  101. journal_rel.store_id,
  102. invoice.origin,
  103. partner.name,
  104. move.id
  105. --,
  106. --move_line.reconcile_ref
  107. '''
  108. r.cr.execute(query,(tuple([company_currency_rate])))
  109. return [
  110. {
  111. 'id': j[0],
  112. 'number': j[1],
  113. 'type': j[2],
  114. 'date': j[3],
  115. 'currency_id': j[4],
  116. 'amount': j[5],
  117. 'amount_currency': j[6],
  118. 'journal_id': j[7],
  119. 'reference': j[8],
  120. 'store_id': j[9],
  121. 'journal_name': j[10],
  122. 'origin': j[11],
  123. 'partner_name': j[12],
  124. 'name': j[13],
  125. 'company_id': j[14],
  126. 'move_id': j[15],
  127. # 'reconcile_ref': j[16],
  128. } for j in r.cr.fetchall()
  129. ]
  130. def get_account_voucher_supplier():
  131. company_currency_rate = r.env.user.company_id.currency_id.rate
  132. query = '''
  133. SELECT voucher.id,
  134. voucher.number,
  135. voucher.type,
  136. voucher.date,
  137. journal.currency,
  138. voucher.amount,
  139. CASE
  140. WHEN journal.currency IS NULL
  141. THEN voucher.amount
  142. ELSE voucher.amount * (%s / (array_agg(rate.rate ORDER BY rate.name DESC))[1])
  143. END AS amount_currency,
  144. voucher.journal_id,
  145. voucher.reference,
  146. journal_rel.store_id,
  147. journal.name,
  148. invoice.origin,
  149. partner.name,
  150. voucher.name,
  151. voucher.company_id
  152. FROM account_voucher AS voucher
  153. LEFT JOIN res_store_journal_rel AS journal_rel
  154. ON voucher.journal_id = journal_rel.journal_id
  155. LEFT JOIN account_journal AS journal
  156. ON journal.id = voucher.journal_id
  157. LEFT JOIN res_currency_rate AS rate
  158. ON rate.currency_id = journal.currency
  159. LEFT JOIN account_invoice AS invoice
  160. ON invoice.number = voucher.reference
  161. LEFT JOIN res_partner AS partner
  162. ON partner.id = voucher.partner_id
  163. WHERE voucher.state = 'posted'
  164. AND voucher.type = 'payment'
  165. GROUP BY
  166. voucher.id,
  167. voucher.number,
  168. voucher.type,
  169. voucher.date,
  170. voucher.amount,
  171. journal.name,
  172. journal.currency,
  173. journal_rel.store_id,
  174. invoice.origin,
  175. partner.name
  176. '''
  177. r.cr.execute(query,(tuple([company_currency_rate])))
  178. return [
  179. {
  180. 'id': j[0],
  181. 'number': j[1],
  182. 'type': j[2],
  183. 'date': j[3],
  184. 'currency_id': j[4],
  185. 'amount': j[5],
  186. 'amount_currency': j[6],
  187. 'journal_id': j[7],
  188. 'reference': j[8],
  189. 'store_id': j[9],
  190. 'journal_name': j[10],
  191. 'origin': j[11],
  192. 'partner_name': j[12],
  193. 'name': j[13],
  194. 'company_id': j[14],
  195. } for j in r.cr.fetchall()
  196. ]
  197. def get_account_voucher_payment():
  198. company_currency_rate = r.env.user.company_id.currency_id.rate
  199. query = '''
  200. SELECT
  201. voucher.id,
  202. voucher.number,
  203. voucher.type,
  204. voucher.date,
  205. journal.currency,
  206. voucher_line.amount_original,
  207. voucher_line.amount,
  208. CASE
  209. WHEN journal.currency IS NULL
  210. THEN voucher_line.amount
  211. ELSE voucher_line.amount * (%s / (array_agg(rate.rate ORDER BY rate.name DESC))[1])
  212. END AS amount_currency,
  213. voucher.journal_id,
  214. voucher.reference,
  215. journal_rel.store_id,
  216. journal.name,
  217. partner.name,
  218. invoice.number,
  219. invoice.residual,
  220. voucher.company_id,
  221. move_line.date_maturity,
  222. voucher.name,
  223. move_line.reconcile_ref
  224. FROM account_voucher AS voucher
  225. LEFT JOIN res_store_journal_rel AS journal_rel
  226. ON voucher.journal_id = journal_rel.journal_id
  227. LEFT JOIN account_journal AS journal
  228. ON journal.id = voucher.journal_id
  229. LEFT JOIN res_currency_rate AS rate
  230. ON rate.currency_id = journal.currency
  231. LEFT JOIN account_invoice AS invoice
  232. ON invoice.number = voucher.reference
  233. LEFT JOIN res_partner AS partner
  234. ON partner.id = voucher.partner_id
  235. LEFT JOIN account_voucher_line AS voucher_line
  236. ON voucher_line.voucher_id = voucher.id
  237. LEFT JOIN account_move_line AS move_line
  238. ON move_line.id = voucher_line.move_line_id
  239. WHERE voucher.state = 'posted'
  240. AND voucher.type = 'receipt'
  241. AND move_line.reconcile_ref IS NOT NULL
  242. GROUP BY
  243. voucher.id,
  244. voucher.number,
  245. voucher.type,
  246. voucher.date,
  247. voucher_line.amount_original,
  248. voucher_line.amount,
  249. journal.name,
  250. journal.currency,
  251. journal_rel.store_id,
  252. invoice.origin,
  253. invoice.number,
  254. invoice.residual,
  255. partner.name,
  256. move_line.date_maturity,
  257. voucher.name,
  258. move_line.reconcile_ref
  259. '''
  260. r.cr.execute(query,(tuple([company_currency_rate])))
  261. return [
  262. {
  263. 'id': j[0],
  264. 'number': j[1],
  265. 'type': j[2],
  266. 'date': j[3],
  267. 'currency_id': j[4],
  268. 'amount_original': j[5],
  269. 'amount': j[6],
  270. 'amount_currency': j[7],
  271. 'journal_id': j[8],
  272. 'reference': j[9],
  273. 'store_id': j[10],
  274. 'journal_name': j[11],
  275. 'partner_name': j[12],
  276. 'invoice_number': j[13],
  277. 'residual': j[14],
  278. 'company_id': j[15],
  279. 'date_maturity': j[16],
  280. 'name': j[17],
  281. 'reconcile_ref': j[18],
  282. } for j in r.cr.fetchall()
  283. ]