accounting bank and cash
parent
c93b6dbe48
commit
aec988c6cc
|
@ -1 +1,2 @@
|
|||
from . import ledger_bank_and_cash
|
||||
from . import ledger_bank_and_cash
|
||||
from . import snk_bank_and_cash
|
|
@ -5,6 +5,7 @@ class LedgerBankAndCash(models.Model):
|
|||
_name = 'ledger.bank.and.cash'
|
||||
_description = 'Bank and Cash Report'
|
||||
_order = 'account_id, date asc'
|
||||
_auto = False
|
||||
|
||||
date = fields.Date()
|
||||
account_id = fields.Many2one('account.account')
|
||||
|
@ -19,5 +20,7 @@ class LedgerBankAndCash(models.Model):
|
|||
account_code = fields.Char('Account Code', related='account_id.code')
|
||||
account_name = fields.Char('Account Name', related='account_id.name')
|
||||
balance = fields.Monetary('Balance',)
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
from odoo import models, fields, api, _
|
||||
|
||||
|
||||
class SnkBankAndCashReport(models.Model):
|
||||
_name = 'snk.bank.and.cash.report'
|
||||
_description = 'Bank and Cash Report'
|
||||
_order = 'id asc'
|
||||
_auto = False
|
||||
|
||||
|
||||
date = fields.Date()
|
||||
account_id = fields.Many2one('account.account')
|
||||
description = fields.Char()
|
||||
partner_id = fields.Many2one('res.partner')
|
||||
currency_id = fields.Many2one('res.currency')
|
||||
debit = fields.Monetary('Debit')
|
||||
credit = fields.Monetary('Credit')
|
||||
balance = fields.Monetary('Balance',)
|
|
@ -1,3 +1,4 @@
|
|||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
access_lsbl_ledger_bank_and_cash,lsbl_ledger_bank_and_cash,model_ledger_bank_and_cash,base.group_user,1,1,1,1
|
||||
access_wz_ledger_bank_and_cash,wz_ledger_bank_and_cash,model_wz_ledger_bank_and_cash,base.group_user,1,1,1,1
|
||||
access_wz_ledger_bank_and_cash,wz_ledger_bank_and_cash,model_wz_ledger_bank_and_cash,base.group_user,1,1,1,1
|
||||
snk_bank_and_cash_report_access,snk_bank_and_cash_report_access,model_snk_bank_and_cash_report,account.group_account_invoice,1,1,1,1
|
|
|
@ -1,30 +1,26 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
|
||||
<record id="accounting_report_ledger_bank_and_cash_view_tree" model="ir.ui.view">
|
||||
<field name="name">accounting.report.ledger.bank.and.cash.view.tree</field>
|
||||
<field name="model">ledger.bank.and.cash</field>
|
||||
<record id="snk_accounting_report_ledger_bank_and_cash_view_tree" model="ir.ui.view">
|
||||
<field name="name">snk.accounting.report.ledger.bank.and.cash.view.tree</field>
|
||||
<field name="model">snk.bank.and.cash.report</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree create="false" delete="false" edit="false">
|
||||
<field name="date"/>
|
||||
<field name="account_id" invisible='1'/>
|
||||
<field name="account_code" string="Account No"/>
|
||||
<field name="account_name" string="Account Name"/>
|
||||
<field name="move_id" string="Nomor Dokumen"/>
|
||||
<field name="name" string="Description"/>
|
||||
<field name="account_id"/>
|
||||
<field name="description" string="Description"/>
|
||||
<field name="partner_id" string="Partner"/>
|
||||
<field name="currency_id"/>
|
||||
<field name="beginning_balance"/>
|
||||
<field name="debit"/>
|
||||
<field name="credit"/>
|
||||
<field name="balance"/>
|
||||
<field name="debit" sum="debit"/>
|
||||
<field name="credit" sum="credit"/>
|
||||
<field name="balance" sum="balance"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_ledger_bank_and_cash" model="ir.actions.act_window">
|
||||
<record id="snk_action_ledger_bank_and_cash" model="ir.actions.act_window">
|
||||
<field name="name">Cash and Bank Book</field>
|
||||
<field name="res_model">ledger.bank.and.cash</field>
|
||||
<field name="res_model">snk.bank.and.cash.report</field>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="help" type="html">
|
||||
<p>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
from odoo import models, fields, api, _
|
||||
from odoo import models, fields, api, _, tools
|
||||
from datetime import date, datetime, timedelta
|
||||
from dateutil.relativedelta import relativedelta
|
||||
from odoo.exceptions import ValidationError
|
||||
|
@ -22,51 +22,95 @@ class WzLedgerBankAndCash(models.TransientModel):
|
|||
raise ValidationError(_("Invalid Date ! End date should be greater than the start date"))
|
||||
|
||||
def generate(self):
|
||||
beginning_balance = 0
|
||||
balance = 0
|
||||
total_balance = 0
|
||||
start = self.date_from
|
||||
end = self.date_to
|
||||
move_line = self.env['account.move.line'].search([('date', '>=', start), ('date', '<=', end),('account_id', 'in', self.account_ids.ids), ('move_id.state', '=', 'posted')])
|
||||
bank_cash = self.env['ledger.bank.and.cash']
|
||||
move_line2 = self.env['account.move.line'].search([('date', '<=', start), ('account_id', 'in', self.account_ids.ids), ('move_id.state', '=', 'posted')])
|
||||
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
|
||||
|
||||
self.env.cr.execute("""
|
||||
delete from ledger_bank_and_cash
|
||||
""")
|
||||
if move_line:
|
||||
no = 1
|
||||
mv_line_sorted = sorted(move_line, key=lambda x: x["date"])
|
||||
for account in self.account_ids:
|
||||
for rec in mv_line_sorted:
|
||||
if rec.account_id.id == account.id:
|
||||
beginning_balance = sum(move_line2.filtered(lambda x : x.account_id.id == rec.account_id.id).mapped('balance'))
|
||||
if no == 1:
|
||||
balance = beginning_balance + (rec.debit - rec.credit)
|
||||
total_balance = balance
|
||||
else:
|
||||
total_balance += rec.balance
|
||||
bank_cash.create({
|
||||
'date': rec.date,
|
||||
'account_id': rec.account_id.id,
|
||||
'move_id': rec.move_id.id,
|
||||
'partner_id': rec.partner_id.id,
|
||||
'currency_id': rec.currency_id.id,
|
||||
'beginning_balance': beginning_balance,
|
||||
'balance': total_balance,
|
||||
'debit': rec.debit,
|
||||
'credit': rec.credit,
|
||||
})
|
||||
no += 1
|
||||
no = 1
|
||||
if bank_cash:
|
||||
bank_cash.sorted(key=lambda r: (r.date, r.account_id))
|
||||
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,
|
||||
{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')
|
||||
|
||||
union all
|
||||
select
|
||||
ROW_NUMBER () OVER () + 1 as id,
|
||||
acm.name as description,
|
||||
null as partner_id,
|
||||
acm.account_id,
|
||||
{currency_id} as currency_id,
|
||||
acm.date,
|
||||
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))
|
||||
|
||||
return {
|
||||
'name': _("Cash and Bank Book Period %s s/d %s" %(self.date_from.strftime("%d-%m-%Y"), self.date_to.strftime("%d-%m-%Y"))),
|
||||
'view_mode': 'list',
|
||||
'view_id': self.env.ref('snk_accounting_report.accounting_report_ledger_bank_and_cash_view_tree').id,
|
||||
'res_model': 'ledger.bank.and.cash',
|
||||
'name': _('Sillo Report Bank and Cash'),
|
||||
'type': 'ir.actions.act_window',
|
||||
'context': {
|
||||
'group_by': ['account_id'],
|
||||
}
|
||||
'view_mode': 'tree',
|
||||
'res_model': 'snk.bank.and.cash.report',
|
||||
'views': [(False, 'tree')],
|
||||
'target': False
|
||||
}
|
||||
|
||||
|
||||
# beginning_balance = 0
|
||||
# balance = 0
|
||||
# total_balance = 0
|
||||
# start = self.date_from
|
||||
# end = self.date_to
|
||||
# move_line = self.env['account.move.line'].search([('date', '>=', start), ('date', '<=', end),('account_id', 'in', self.account_ids.ids), ('move_id.state', '=', 'posted')])
|
||||
# bank_cash = self.env['ledger.bank.and.cash']
|
||||
# move_line2 = self.env['account.move.line'].search([('date', '<=', start), ('account_id', 'in', self.account_ids.ids), ('move_id.state', '=', 'posted')])
|
||||
# self.env.cr.execute("""
|
||||
# delete from ledger_bank_and_cash
|
||||
# """)
|
||||
# if move_line:
|
||||
# no = 1
|
||||
# mv_line_sorted = sorted(move_line, key=lambda x: x["date"])
|
||||
# for account in self.account_ids:
|
||||
# for rec in mv_line_sorted:
|
||||
# if rec.account_id.id == account.id:
|
||||
# beginning_balance = sum(move_line2.filtered(lambda x : x.account_id.id == rec.account_id.id).mapped('balance'))
|
||||
# if no == 1:
|
||||
# balance = beginning_balance + (rec.debit - rec.credit)
|
||||
# total_balance = balance
|
||||
# else:
|
||||
# total_balance += rec.balance
|
||||
# bank_cash.create({
|
||||
# 'date': rec.date,
|
||||
# 'account_id': rec.account_id.id,
|
||||
# 'move_id': rec.move_id.id,
|
||||
# 'partner_id': rec.partner_id.id,
|
||||
# 'currency_id': rec.currency_id.id,
|
||||
# 'beginning_balance': beginning_balance,
|
||||
# 'balance': total_balance,
|
||||
# 'debit': rec.debit,
|
||||
# 'credit': rec.credit,
|
||||
# })
|
||||
# no += 1
|
||||
# no = 1
|
||||
# if bank_cash:
|
||||
# bank_cash.sorted(key=lambda r: (r.date, r.account_id))
|
||||
# return {
|
||||
# 'name': _("Cash and Bank Book Period %s s/d %s" %(self.date_from.strftime("%d-%m-%Y"), self.date_to.strftime("%d-%m-%Y"))),
|
||||
# 'view_mode': 'list',
|
||||
# 'view_id': self.env.ref('snk_accounting_report.accounting_report_ledger_bank_and_cash_view_tree').id,
|
||||
# 'res_model': 'ledger.bank.and.cash',
|
||||
# 'type': 'ir.actions.act_window',
|
||||
# 'context': {
|
||||
# 'group_by': ['account_id'],
|
||||
# }
|
||||
# }
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
<field name="date_from" required="1"/>
|
||||
<field name="date_to" required="1"/>
|
||||
<field name="user_type_id" invisible="1"/>
|
||||
<field name="account_ids" required="1" options="{'no_create' : True}" widget="many2many_tags" domain="[('user_type_id', '=', user_type_id)]"/>
|
||||
<!-- <field name="account_ids" required="1" options="{'no_create' : True}" widget="many2many_tags" domain="[('user_type_id', '=', user_type_id)]"/> -->
|
||||
</group>
|
||||
<footer>
|
||||
<button string="Generate" name="generate" type="object" class="oe_highlight"/>
|
||||
|
|
Loading…
Reference in New Issue