[IMP] account_reconcile_oca: Add balance
parent
a030073b32
commit
402fd97d05
|
@ -12,6 +12,7 @@ class AccountJournal(models.Model):
|
||||||
default="edit",
|
default="edit",
|
||||||
required=True,
|
required=True,
|
||||||
)
|
)
|
||||||
|
company_currency_id = fields.Many2one(related="company_id.currency_id")
|
||||||
|
|
||||||
def get_rainbowman_message(self):
|
def get_rainbowman_message(self):
|
||||||
self.ensure_one()
|
self.ensure_one()
|
||||||
|
|
|
@ -1,14 +1,17 @@
|
||||||
/** @odoo-module */
|
/** @odoo-module */
|
||||||
const {useState, useSubEnv, onMounted} = owl;
|
const {onMounted, onWillStart, useState, useSubEnv} = owl;
|
||||||
import {useBus, useService} from "@web/core/utils/hooks";
|
import {useBus, useService} from "@web/core/utils/hooks";
|
||||||
import {KanbanController} from "@web/views/kanban/kanban_controller";
|
import {KanbanController} from "@web/views/kanban/kanban_controller";
|
||||||
import {View} from "@web/views/view";
|
import {View} from "@web/views/view";
|
||||||
|
import {formatMonetary} from "@web/views/fields/formatters";
|
||||||
|
|
||||||
export class ReconcileController extends KanbanController {
|
export class ReconcileController extends KanbanController {
|
||||||
async setup() {
|
async setup() {
|
||||||
super.setup();
|
super.setup();
|
||||||
this.state = useState({
|
this.state = useState({
|
||||||
selectedRecordId: null,
|
selectedRecordId: null,
|
||||||
|
journalBalance: 0,
|
||||||
|
currency: false,
|
||||||
});
|
});
|
||||||
useSubEnv({
|
useSubEnv({
|
||||||
parentController: this,
|
parentController: this,
|
||||||
|
@ -22,7 +25,43 @@ export class ReconcileController extends KanbanController {
|
||||||
useBus(this.model.bus, "update", () => {
|
useBus(this.model.bus, "update", () => {
|
||||||
this.selectRecord();
|
this.selectRecord();
|
||||||
});
|
});
|
||||||
onMounted(() => this.selectRecord());
|
onWillStart(() => {
|
||||||
|
this.updateJournalInfo();
|
||||||
|
});
|
||||||
|
onMounted(() => {
|
||||||
|
this.selectRecord();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
get journalId() {
|
||||||
|
if (this.props.resModel === "account.bank.statement.line") {
|
||||||
|
return this.props.context.active_id;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
async updateJournalInfo() {
|
||||||
|
var journalId = this.journalId;
|
||||||
|
if (!journalId) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var result = await this.orm.call("account.journal", "read", [
|
||||||
|
[journalId],
|
||||||
|
["current_statement_balance", "currency_id", "company_currency_id"],
|
||||||
|
]);
|
||||||
|
this.state.journalBalance = result[0].current_statement_balance;
|
||||||
|
this.state.currency = (result[0].currency_id ||
|
||||||
|
result[0].company_currency_id)[0];
|
||||||
|
}
|
||||||
|
get journalBalanceStr() {
|
||||||
|
if (!this.state.journalBalance) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
console.log(this.state, {
|
||||||
|
currencyId: this.state.currency,
|
||||||
|
humanReadable: true,
|
||||||
|
});
|
||||||
|
return formatMonetary(this.state.journalBalance, {
|
||||||
|
currencyId: this.state.currency,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
exposeController(controller) {
|
exposeController(controller) {
|
||||||
this.form_controller = controller;
|
this.form_controller = controller;
|
||||||
|
@ -48,6 +87,7 @@ export class ReconcileController extends KanbanController {
|
||||||
return {
|
return {
|
||||||
resId: this.state.selectedRecordId,
|
resId: this.state.selectedRecordId,
|
||||||
type: "form",
|
type: "form",
|
||||||
|
noBreadcrumbs: true,
|
||||||
context: {
|
context: {
|
||||||
...(this.props.context || {}),
|
...(this.props.context || {}),
|
||||||
form_view_ref: this.props.context.view_ref,
|
form_view_ref: this.props.context.view_ref,
|
||||||
|
|
|
@ -2,7 +2,11 @@
|
||||||
|
|
||||||
import {KanbanRenderer} from "@web/views/kanban/kanban_renderer";
|
import {KanbanRenderer} from "@web/views/kanban/kanban_renderer";
|
||||||
import {ReconcileKanbanRecord} from "./reconcile_kanban_record.esm.js";
|
import {ReconcileKanbanRecord} from "./reconcile_kanban_record.esm.js";
|
||||||
export class ReconcileRenderer extends KanbanRenderer {}
|
export class ReconcileRenderer extends KanbanRenderer {
|
||||||
|
get journalBalanceStr() {
|
||||||
|
console.log(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ReconcileRenderer.components = {
|
ReconcileRenderer.components = {
|
||||||
...KanbanRenderer.components,
|
...KanbanRenderer.components,
|
||||||
|
|
|
@ -17,6 +17,9 @@ export class ReconcileFormController extends FormController {
|
||||||
afterExecuteAction: this.afterExecuteActionButton.bind(this),
|
afterExecuteAction: this.afterExecuteActionButton.bind(this),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
displayName() {
|
||||||
|
return this.env.config.getDisplayName();
|
||||||
|
}
|
||||||
async reloadFormController() {
|
async reloadFormController() {
|
||||||
var is_reconciled = this.model.root.data.is_reconciled;
|
var is_reconciled = this.model.root.data.is_reconciled;
|
||||||
await this.model.root.load();
|
await this.model.root.load();
|
||||||
|
|
|
@ -21,18 +21,17 @@ export class AccountReconcileDataWidget extends Component {
|
||||||
getReconcileLines() {
|
getReconcileLines() {
|
||||||
var data = this.props.record.data[this.props.name].data;
|
var data = this.props.record.data[this.props.name].data;
|
||||||
for (var line in data) {
|
for (var line in data) {
|
||||||
data[line].amount_format = formatMonetary(data[line].amount, undefined, {
|
data[line].amount_format = formatMonetary(data[line].amount, {
|
||||||
currency: data[line].currency_id,
|
currency: data[line].currency_id,
|
||||||
});
|
});
|
||||||
data[line].debit_format = formatMonetary(data[line].debit, undefined, {
|
data[line].debit_format = formatMonetary(data[line].debit, {
|
||||||
currency: data[line].currency_id,
|
currency: data[line].currency_id,
|
||||||
});
|
});
|
||||||
data[line].credit_format = formatMonetary(data[line].credit, undefined, {
|
data[line].credit_format = formatMonetary(data[line].credit, {
|
||||||
currency: data[line].currency_id,
|
currency: data[line].currency_id,
|
||||||
});
|
});
|
||||||
data[line].amount_currency_format = formatMonetary(
|
data[line].amount_currency_format = formatMonetary(
|
||||||
data[line].currency_amount,
|
data[line].currency_amount,
|
||||||
undefined,
|
|
||||||
{
|
{
|
||||||
currency: data[line].line_currency_id,
|
currency: data[line].line_currency_id,
|
||||||
}
|
}
|
||||||
|
@ -40,7 +39,6 @@ export class AccountReconcileDataWidget extends Component {
|
||||||
if (data[line].original_amount) {
|
if (data[line].original_amount) {
|
||||||
data[line].original_amount_format = formatMonetary(
|
data[line].original_amount_format = formatMonetary(
|
||||||
data[line].original_amount,
|
data[line].original_amount,
|
||||||
undefined,
|
|
||||||
{
|
{
|
||||||
currency: data[line].currency_id,
|
currency: data[line].currency_id,
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,17 @@
|
||||||
t-inherit="web.KanbanRenderer"
|
t-inherit="web.KanbanRenderer"
|
||||||
t-inherit-mode="primary"
|
t-inherit-mode="primary"
|
||||||
>
|
>
|
||||||
|
<xpath expr="//t[@t-as='groupOrRecord']" position="before">
|
||||||
|
<div class="m-2 d-flex w-100" t-if="env.parentController.journalId">
|
||||||
|
<span
|
||||||
|
class="flex-fill text-900 text-start ps-0 fw-bold fs-4 align-self-center"
|
||||||
|
>Balance</span>
|
||||||
|
<span
|
||||||
|
class="pe-0 fw-bold fs-4 align-self-center"
|
||||||
|
t-esc="env.parentController.journalBalanceStr"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</xpath>
|
||||||
<xpath expr="div[hasclass('o_kanban_renderer')]" position="attributes">
|
<xpath expr="div[hasclass('o_kanban_renderer')]" position="attributes">
|
||||||
<attribute
|
<attribute
|
||||||
name="class"
|
name="class"
|
||||||
|
|
|
@ -315,7 +315,7 @@
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
<record id="action_bank_statement_line_reconcile" model="ir.actions.act_window">
|
<record id="action_bank_statement_line_reconcile" model="ir.actions.act_window">
|
||||||
<field name="name">Reconcile bank statement lines</field>
|
<field name="name">Statement lines</field>
|
||||||
<field name="res_model">account.bank.statement.line</field>
|
<field name="res_model">account.bank.statement.line</field>
|
||||||
<field name="domain">[('journal_id', '=', active_id)]</field>
|
<field name="domain">[('journal_id', '=', active_id)]</field>
|
||||||
<field name="context">
|
<field name="context">
|
||||||
|
|
Loading…
Reference in New Issue