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.
 
 

132 lines
5.2 KiB

from odoo import http,_
from odoo.http import request
import werkzeug
from odoo.exceptions import UserError
from odoo.addons.portal.controllers.portal import CustomerPortal,pager as portal_pager, get_records_pager
class PortalOpendons(CustomerPortal):
def _prepare_home_portal_values(self, counters):
values = super()._prepare_home_portal_values(counters)
partner = request.env.user.partner_id
if 'taxreceipt_count' in counters:
taxreceipt_count=request.env['donation.tax.receipt'].sudo().search_count([('partner_id','=',int(partner.id))])
values['taxreceipt_count'] = taxreceipt_count
if 'donation_count' in counters:
donation_count=request.env['donation.donation'].sudo().search_count(['&',('partner_id','=',int(partner.id)),('state','=','done')])
values['donation_count'] = donation_count
return values
@http.route(['/my/taxreceipts', '/my/taxreceipts/page/<int:page>'], type='http', auth="user", website=True)
def portal_my_taxreceipts(self, page=1, date_begin=None, date_end=None, sortby=None, **kw):
values = self._prepare_portal_layout_values()
partner = request.env.user.partner_id
taxreceipt = request.env['donation.tax.receipt'].sudo().search([])
domain = [
('partner_id', '=',int(partner.id) )
]
searchbar_sortings = {
'date': {'label': _('Tax receipt Date'), 'taxreceipt': 'date desc'},
}
# default sortby order
if not sortby:
sortby = 'date'
sort_taxreceipt = searchbar_sortings[sortby]['taxreceipt']
if date_begin and date_end:
domain += [('create_date', '>', date_begin), ('create_date', '<=', date_end)]
# count for pager
taxreceipt_count = taxreceipt.search_count(domain)
# make pager
pager = portal_pager(
url="/my/taxreceipts",
url_args={'date_begin': date_begin, 'date_end': date_end, 'sortby': sortby},
total=taxreceipt_count,
page=page,
step=self._items_per_page
)
# search the count to display, according to the pager data
taxreceipts = taxreceipt.sudo().search(domain, order=sort_taxreceipt, limit=self._items_per_page, offset=pager['offset'])
request.session['my_taxreceipt_history'] = taxreceipts.ids[:100]
values.update({
'date': date_begin,
'taxreceipts': taxreceipts.sudo(),
'page_name': 'tax receipts',
'pager': pager,
'default_url': '/my/taxreceipts',
'searchbar_sortings': searchbar_sortings,
'sortby': sortby,
})
return request.render("opendons.portal_my_taxreceipts", values)
@http.route(['/my/donations', '/my/donations/page/<int:page>'], type='http', auth="user", website=True)
def portal_my_donations(self, page=1, date_begin=None, date_end=None, sortby=None, **kw):
values = self._prepare_portal_layout_values()
partner = request.env.user.partner_id
donation = request.env['donation.line']
domain = [
('partner_id', '=',int(partner.id) )
]
searchbar_sortings = {
'date': {'label': _('Donation Date'), 'Donation': 'donation_date desc'},
}
# default sortby order
if not sortby:
sortby = 'date'
sort_donation = searchbar_sortings[sortby]['Donation']
if date_begin and date_end:
domain += [('create_date', '>', date_begin), ('create_date', '<=', date_end)]
# count for pager
donation_count = donation.search_count(domain)
# make pager
pager = portal_pager(
url="/my/donations",
url_args={'date_begin': date_begin, 'date_end': date_end, 'sortby': sortby},
total=donation_count,
page=page,
step=self._items_per_page
)
# search the count to display, according to the pager data
donations = donation.search(domain, order=sort_donation, limit=self._items_per_page, offset=pager['offset'])
request.session['my_donation_history'] = donations.ids[:100]
values.update({
'date': date_begin,
'donations': donations.sudo(),
'page_name': 'Donations',
'pager': pager,
'default_url': '/my/donations',
'searchbar_sortings': searchbar_sortings,
'sortby': sortby,
})
return request.render("opendons.portal_my_donations", values)
@http.route('/my/taxreceipt/print', methods=['POST', 'GET'], csrf=False, type='http', auth="user", website=True)
def print_id(self, **kw):
tr=request.env['donation.tax.receipt'].sudo().search([('id','=',int(kw['id']))])
if tr:
pdf = request.env.ref('opendons.report_donation_tax_receipt').sudo()._render_qweb_pdf([tr.id])[0]
pdfhttpheaders = [('Content-Type', 'application/pdf'), ('Content-Length', len(pdf))]
return request.make_response(pdf, headers=pdfhttpheaders)
else:
return request.redirect('/')