[IMP] query by journal account

main
Angga 2024-09-23 12:35:05 +07:00
parent aec988c6cc
commit a209f2a6b9
2 changed files with 28 additions and 9 deletions

View File

@ -14,7 +14,15 @@ class WzLedgerBankAndCash(models.TransientModel):
date_to = fields.Date("To Date")
account_ids = fields.Many2many('account.account', string='Account')
user_type_id = fields.Many2one('account.account.type', string='User Type', default=lambda self:self.default_user_type())
company_id = fields.Many2one('res.company', default=lambda self: self.env.company)
journal_ids = fields.Many2many('account.journal')
@api.onchange('journal_ids')
def onchange_journal_ids(self):
if not self.journal_ids:
return
acc_ids = [x.default_account_id.id for x in self.journal_ids]
self.account_ids = acc_ids
@api.constrains("date_from", "date_to")
def _check_filtered(self):
for rec in self:
@ -23,28 +31,35 @@ class WzLedgerBankAndCash(models.TransientModel):
def generate(self):
tools.drop_view_if_exists(self.env.cr, 'snk_bank_and_cash_report')
company = self.env['res.company'].browse(1)
currency_id = company.currency_id.id
company_id = self.company_id
currency_id = company_id.currency_id.id
journal_banks = self.env['account.journal'].search([('type','=','bank')])
account_banks = [str(x.default_account_id.id) for x in journal_banks]
print(account_banks)
n_account = len(account_banks)
str_account = ",".join(account_banks)
print(str_account)
self.env.cr.execute("""
CREATE OR REPLACE VIEW snk_bank_and_cash_report AS (
select
ROW_NUMBER () OVER () as id,
'Begining Balance' as description,
null as partner_id,
null as account_id,
acm.account_id as account_id,
{currency_id} as currency_id,
max(acm.date) as date,
sum(acm.debit) as debit,
sum(acm.credit) as credit,
sum(acm.debit - acm.credit) as balance
from account_move_line acm left join account_journal aj on acm.journal_id = aj.id
where date < '{start_date}' and aj.type in ('bank', 'cash')
left join account_account account on acm.account_id = account.id
where date < '{start_date}' and aj.type in ('bank', 'cash') and account.id in ({str_account})
group by acm.account_id
union all
select
ROW_NUMBER () OVER () + 1 as id,
ROW_NUMBER () OVER () + {n} as id,
acm.name as description,
null as partner_id,
acm.account_id,
@ -53,8 +68,9 @@ class WzLedgerBankAndCash(models.TransientModel):
acm.debit,
acm.credit,acm.balance
from account_move_line acm left join account_journal aj on acm.journal_id = aj.id
where date between '{start_date}' and '{end_date}' and aj.type in ('bank', 'cash')
)""".format(start_date=self.date_from,end_date=self.date_to, currency_id=currency_id))
left join account_account account on acm.account_id = account.id
where date between '{start_date}' and '{end_date}' and aj.type in ('bank', 'cash') and account.id in ({str_account})
)""".format(start_date=self.date_from,end_date=self.date_to, currency_id=currency_id, n=n_account,str_account=str_account))
return {
'name': _('Sillo Report Bank and Cash'),

View File

@ -11,6 +11,9 @@
<field name="date_from" required="1"/>
<field name="date_to" required="1"/>
<field name="user_type_id" invisible="1"/>
<field name="company_id"/>
<field name="journal_ids" widget="many2many_tags"/>
<field name="account_ids" widget="many2many_tags"/>
<!-- <field name="account_ids" required="1" options="{'no_create' : True}" widget="many2many_tags" domain="[('user_type_id', '=', user_type_id)]"/> -->
</group>
<footer>