# -*- coding: utf-8 -*- from openerp.http import request as r def get_account_voucher_all(): company_currency_rate = r.env.user.company_id.currency_id.rate query = ''' SELECT voucher.id, voucher.number, voucher.type, voucher.date, journal.currency, voucher.amount, CASE WHEN journal.currency IS NULL THEN voucher.amount ELSE voucher.amount * (%s / (array_agg(rate.rate ORDER BY rate.name DESC))[1]) END AS amount_currency, voucher.journal_id, voucher.reference FROM account_voucher AS voucher LEFT JOIN res_store_journal_rel AS journal_rel ON voucher.journal_id = journal_rel.journal_id LEFT JOIN account_journal AS journal ON journal.id = voucher.journal_id LEFT JOIN res_currency_rate AS rate ON rate.currency_id = journal.currency WHERE voucher.state = 'posted' GROUP BY voucher.id, voucher.number, voucher.type, voucher.date, voucher.amount, journal.name, journal.currency ''' r.cr.execute(query,(tuple([company_currency_rate]))) return [ { 'id': j[0], 'number': j[1], 'type': j[2], 'date': j[3], 'currency_id': j[4], 'amount': j[5], 'amount_currency': j[6], 'journal_id': j[7], 'reference': j[8], } for j in r.cr.fetchall() ] def get_account_voucher_customer(): company_currency_rate = r.env.user.company_id.currency_id.rate query = ''' SELECT voucher.id, voucher.number, voucher.type, voucher.date, journal.currency, voucher.amount, CASE WHEN journal.currency IS NULL THEN voucher.amount ELSE voucher.amount * (%s / (array_agg(rate.rate ORDER BY rate.name DESC))[1]) END AS amount_currency, voucher.journal_id, voucher.reference, journal_rel.store_id, journal.name, invoice.origin, partner.name, voucher.name, voucher.company_id, move.id --, --move_line.reconcile_ref FROM account_voucher AS voucher LEFT JOIN res_store_journal_rel AS journal_rel ON voucher.journal_id = journal_rel.journal_id LEFT JOIN account_journal AS journal ON journal.id = voucher.journal_id LEFT JOIN res_currency_rate AS rate ON rate.currency_id = journal.currency LEFT JOIN account_invoice AS invoice ON invoice.number = voucher.reference LEFT JOIN res_partner AS partner ON partner.id = voucher.partner_id LEFT JOIN account_move AS move ON move.name = voucher.number --LEFT JOIN account_move_line AS move_line --on move_line.move_id = move.id WHERE voucher.state = 'posted' AND voucher.type = 'receipt' --AND move_line.reconcile_ref IS NOT NULL GROUP BY voucher.id, voucher.number, voucher.type, voucher.date, voucher.amount, journal.name, journal.currency, journal_rel.store_id, invoice.origin, partner.name, move.id --, --move_line.reconcile_ref ''' r.cr.execute(query,(tuple([company_currency_rate]))) return [ { 'id': j[0], 'number': j[1], 'type': j[2], 'date': j[3], 'currency_id': j[4], 'amount': j[5], 'amount_currency': j[6], 'journal_id': j[7], 'reference': j[8], 'store_id': j[9], 'journal_name': j[10], 'origin': j[11], 'partner_name': j[12], 'name': j[13], 'company_id': j[14], 'move_id': j[15], # 'reconcile_ref': j[16], } for j in r.cr.fetchall() ] def get_account_voucher_supplier(): company_currency_rate = r.env.user.company_id.currency_id.rate query = ''' SELECT voucher.id, voucher.number, voucher.type, voucher.date, journal.currency, voucher.amount, CASE WHEN journal.currency IS NULL THEN voucher.amount ELSE voucher.amount * (%s / (array_agg(rate.rate ORDER BY rate.name DESC))[1]) END AS amount_currency, voucher.journal_id, voucher.reference, journal_rel.store_id, journal.name, invoice.origin, partner.name, voucher.name, voucher.company_id FROM account_voucher AS voucher LEFT JOIN res_store_journal_rel AS journal_rel ON voucher.journal_id = journal_rel.journal_id LEFT JOIN account_journal AS journal ON journal.id = voucher.journal_id LEFT JOIN res_currency_rate AS rate ON rate.currency_id = journal.currency LEFT JOIN account_invoice AS invoice ON invoice.number = voucher.reference LEFT JOIN res_partner AS partner ON partner.id = voucher.partner_id WHERE voucher.state = 'posted' AND voucher.type = 'payment' GROUP BY voucher.id, voucher.number, voucher.type, voucher.date, voucher.amount, journal.name, journal.currency, journal_rel.store_id, invoice.origin, partner.name ''' r.cr.execute(query,(tuple([company_currency_rate]))) return [ { 'id': j[0], 'number': j[1], 'type': j[2], 'date': j[3], 'currency_id': j[4], 'amount': j[5], 'amount_currency': j[6], 'journal_id': j[7], 'reference': j[8], 'store_id': j[9], 'journal_name': j[10], 'origin': j[11], 'partner_name': j[12], 'name': j[13], 'company_id': j[14], } for j in r.cr.fetchall() ] def get_account_voucher_payment(): company_currency_rate = r.env.user.company_id.currency_id.rate query = ''' SELECT voucher.id, voucher.number, voucher.type, voucher.date, journal.currency, voucher_line.amount_original, voucher_line.amount, CASE WHEN journal.currency IS NULL THEN voucher_line.amount ELSE voucher_line.amount * (%s / (array_agg(rate.rate ORDER BY rate.name DESC))[1]) END AS amount_currency, voucher.journal_id, voucher.reference, journal_rel.store_id, journal.name, partner.name, invoice.number, invoice.residual, voucher.company_id, move_line.date_maturity, voucher.name, move_line.reconcile_ref FROM account_voucher AS voucher LEFT JOIN res_store_journal_rel AS journal_rel ON voucher.journal_id = journal_rel.journal_id LEFT JOIN account_journal AS journal ON journal.id = voucher.journal_id LEFT JOIN res_currency_rate AS rate ON rate.currency_id = journal.currency LEFT JOIN account_invoice AS invoice ON invoice.number = voucher.reference LEFT JOIN res_partner AS partner ON partner.id = voucher.partner_id LEFT JOIN account_voucher_line AS voucher_line ON voucher_line.voucher_id = voucher.id LEFT JOIN account_move_line AS move_line ON move_line.id = voucher_line.move_line_id WHERE voucher.state = 'posted' AND voucher.type = 'receipt' AND move_line.reconcile_ref IS NOT NULL GROUP BY voucher.id, voucher.number, voucher.type, voucher.date, voucher_line.amount_original, voucher_line.amount, journal.name, journal.currency, journal_rel.store_id, invoice.origin, invoice.number, invoice.residual, partner.name, move_line.date_maturity, voucher.name, move_line.reconcile_ref ''' r.cr.execute(query,(tuple([company_currency_rate]))) return [ { 'id': j[0], 'number': j[1], 'type': j[2], 'date': j[3], 'currency_id': j[4], 'amount_original': j[5], 'amount': j[6], 'amount_currency': j[7], 'journal_id': j[8], 'reference': j[9], 'store_id': j[10], 'journal_name': j[11], 'partner_name': j[12], 'invoice_number': j[13], 'residual': j[14], 'company_id': j[15], 'date_maturity': j[16], 'name': j[17], 'reconcile_ref': j[18], } for j in r.cr.fetchall() ]