Compare commits

...

6 Commits

6 changed files with 54 additions and 33 deletions

View File

@ -2,6 +2,16 @@ Change Log
========== ==========
Version 1.5.1
-------------
Released 2023/4/30
* Fixed the error calling the old ``setEnableDescriptionAccount``
method in the ``saveOriginalLineItem`` method of the JavaScript
``JournalEntryLineItemEditor`` class.
Version 1.5.0 Version 1.5.0
------------- -------------

View File

@ -24,7 +24,7 @@ from flask_sqlalchemy import SQLAlchemy
from accounting.utils.user import UserUtilityInterface from accounting.utils.user import UserUtilityInterface
VERSION: str = "1.5.0" VERSION: str = "1.5.1"
"""The package version.""" """The package version."""
db: SQLAlchemy = SQLAlchemy() db: SQLAlchemy = SQLAlchemy()
"""The database instance.""" """The database instance."""

View File

@ -22,7 +22,7 @@ from __future__ import annotations
import datetime as dt import datetime as dt
import re import re
from decimal import Decimal from decimal import Decimal
from typing import Type, Annotated, Self from typing import Type, Self
import sqlalchemy as sa import sqlalchemy as sa
from babel import Locale from babel import Locale
@ -34,18 +34,6 @@ from accounting import db
from accounting.locale import gettext from accounting.locale import gettext
from accounting.utils.user import user_cls, user_pk_column from accounting.utils.user import user_cls, user_pk_column
timestamp: Type[dt.datetime] \
= Annotated[dt.datetime, mapped_column(db.DateTime(timezone=True),
server_default=db.func.now())]
"""The timestamp."""
user_pk: Type[int] \
= Annotated[int, mapped_column(db.ForeignKey(user_pk_column,
onupdate="CASCADE"))]
"""The user primary key."""
random_pk: Type[int] \
= Annotated[int, mapped_column(primary_key=True, autoincrement=False)]
"""The random primary key."""
class BaseAccount(db.Model): class BaseAccount(db.Model):
"""A base account.""" """A base account."""
@ -126,15 +114,21 @@ class Account(db.Model):
"""The title.""" """The title."""
is_need_offset: Mapped[bool] = mapped_column(default=False) is_need_offset: Mapped[bool] = mapped_column(default=False)
"""Whether the journal entry line items of this account need offset.""" """Whether the journal entry line items of this account need offset."""
created_at: Mapped[timestamp] created_at: Mapped[dt.datetime] \
= mapped_column(db.DateTime(timezone=True),
server_default=db.func.now())
"""The date and time when this record was created.""" """The date and time when this record was created."""
created_by_id: Mapped[user_pk] = mapped_column() created_by_id: Mapped[int] \
= mapped_column(db.ForeignKey(user_pk_column, onupdate="CASCADE"))
"""The ID of the user who created the record.""" """The ID of the user who created the record."""
created_by: Mapped[user_cls] = db.relationship(foreign_keys=created_by_id) created_by: Mapped[user_cls] = db.relationship(foreign_keys=created_by_id)
"""The user who created the record.""" """The user who created the record."""
updated_at: Mapped[timestamp] updated_at: Mapped[dt.datetime] \
= mapped_column(db.DateTime(timezone=True),
server_default=db.func.now())
"""The date and time when this record was last updated.""" """The date and time when this record was last updated."""
updated_by_id: Mapped[user_pk] = mapped_column() updated_by_id: Mapped[int] \
= mapped_column(db.ForeignKey(user_pk_column, onupdate="CASCADE"))
"""The ID of the last user who updated the record.""" """The ID of the last user who updated the record."""
updated_by: Mapped[user_cls] = db.relationship(foreign_keys=updated_by_id) updated_by: Mapped[user_cls] = db.relationship(foreign_keys=updated_by_id)
"""The last user who updated the record.""" """The last user who updated the record."""
@ -376,15 +370,21 @@ class Currency(db.Model):
"""The code.""" """The code."""
name_l10n: Mapped[str] = mapped_column("name") name_l10n: Mapped[str] = mapped_column("name")
"""The name.""" """The name."""
created_at: Mapped[timestamp] created_at: Mapped[dt.datetime] \
= mapped_column(db.DateTime(timezone=True),
server_default=db.func.now())
"""The date and time when this record was created.""" """The date and time when this record was created."""
created_by_id: Mapped[user_pk] = mapped_column() created_by_id: Mapped[int] \
= mapped_column(db.ForeignKey(user_pk_column, onupdate="CASCADE"))
"""The ID of the user who created the record.""" """The ID of the user who created the record."""
created_by: Mapped[user_cls] = db.relationship(foreign_keys=created_by_id) created_by: Mapped[user_cls] = db.relationship(foreign_keys=created_by_id)
"""The user who created the record.""" """The user who created the record."""
updated_at: Mapped[timestamp] updated_at: Mapped[dt.datetime] \
= mapped_column(db.DateTime(timezone=True),
server_default=db.func.now())
"""The date and time when this record was last updated.""" """The date and time when this record was last updated."""
updated_by_id: Mapped[user_pk] = mapped_column() updated_by_id: Mapped[int] \
= mapped_column(db.ForeignKey(user_pk_column, onupdate="CASCADE"))
"""The ID of the last user who updated the record.""" """The ID of the last user who updated the record."""
updated_by: Mapped[user_cls] \ updated_by: Mapped[user_cls] \
= db.relationship(foreign_keys=updated_by_id) = db.relationship(foreign_keys=updated_by_id)
@ -543,15 +543,21 @@ class JournalEntry(db.Model):
"""The account number under the date.""" """The account number under the date."""
note: Mapped[str | None] note: Mapped[str | None]
"""The note.""" """The note."""
created_at: Mapped[timestamp] created_at: Mapped[dt.datetime] \
= mapped_column(db.DateTime(timezone=True),
server_default=db.func.now())
"""The date and time when this record was created.""" """The date and time when this record was created."""
created_by_id: Mapped[user_pk] = mapped_column() created_by_id: Mapped[int] \
= mapped_column(db.ForeignKey(user_pk_column, onupdate="CASCADE"))
"""The ID of the user who created the record.""" """The ID of the user who created the record."""
created_by: Mapped[user_cls] = db.relationship(foreign_keys=created_by_id) created_by: Mapped[user_cls] = db.relationship(foreign_keys=created_by_id)
"""The user who created the record.""" """The user who created the record."""
updated_at: Mapped[timestamp] updated_at: Mapped[dt.datetime] \
= mapped_column(db.DateTime(timezone=True),
server_default=db.func.now())
"""The date and time when this record was last updated.""" """The date and time when this record was last updated."""
updated_by_id: Mapped[user_pk] = mapped_column() updated_by_id: Mapped[int] \
= mapped_column(db.ForeignKey(user_pk_column, onupdate="CASCADE"))
"""The ID of the last user who updated the record.""" """The ID of the last user who updated the record."""
updated_by: Mapped[user_cls] = db.relationship(foreign_keys=updated_by_id) updated_by: Mapped[user_cls] = db.relationship(foreign_keys=updated_by_id)
"""The last user who updated the record.""" """The last user who updated the record."""
@ -876,15 +882,21 @@ class Option(db.Model):
"""The name.""" """The name."""
value: Mapped[str] = mapped_column(db.Text) value: Mapped[str] = mapped_column(db.Text)
"""The option value.""" """The option value."""
created_at: Mapped[timestamp] created_at: Mapped[dt.datetime] \
= mapped_column(db.DateTime(timezone=True),
server_default=db.func.now())
"""The date and time when this record was created.""" """The date and time when this record was created."""
created_by_id: Mapped[user_pk] = mapped_column() created_by_id: Mapped[int] \
= mapped_column(db.ForeignKey(user_pk_column, onupdate="CASCADE"))
"""The ID of the user who created the record.""" """The ID of the user who created the record."""
created_by: Mapped[user_cls] = db.relationship(foreign_keys=created_by_id) created_by: Mapped[user_cls] = db.relationship(foreign_keys=created_by_id)
"""The user who created the record.""" """The user who created the record."""
updated_at: Mapped[timestamp] updated_at: Mapped[dt.datetime] \
= mapped_column(db.DateTime(timezone=True),
server_default=db.func.now())
"""The date and time when this record was last updated.""" """The date and time when this record was last updated."""
updated_by_id: Mapped[user_pk] = mapped_column() updated_by_id: Mapped[int] \
= mapped_column(db.ForeignKey(user_pk_column, onupdate="CASCADE"))
"""The ID of the last user who updated the record.""" """The ID of the last user who updated the record."""
updated_by: Mapped[user_cls] = db.relationship(foreign_keys=updated_by_id) updated_by: Mapped[user_cls] = db.relationship(foreign_keys=updated_by_id)
"""The last user who updated the record.""" """The last user who updated the record."""

View File

@ -143,7 +143,7 @@ class AccountsWithUnappliedOriginalLineItems(BaseReport):
:return: The response of the report for download. :return: The response of the report for download.
""" """
filename: str = f"unapplied-accounts.csv" filename: str = "unapplied-accounts.csv"
return csv_download(filename, get_csv_rows(self.__accounts)) return csv_download(filename, get_csv_rows(self.__accounts))
def html(self) -> str: def html(self) -> str:

View File

@ -144,7 +144,7 @@ class AccountsWithUnmatchedOffsets(BaseReport):
:return: The response of the report for download. :return: The response of the report for download.
""" """
filename: str = f"unapplied-accounts.csv" filename: str = "unmatched-accounts.csv"
return csv_download(filename, get_csv_rows(self.__accounts)) return csv_download(filename, get_csv_rows(self.__accounts))
def html(self) -> str: def html(self) -> str:

View File

@ -276,7 +276,6 @@ class JournalEntryLineItemEditor {
this.originalLineItemDate = originalLineItem.date; this.originalLineItemDate = originalLineItem.date;
this.originalLineItemText = originalLineItem.text; this.originalLineItemText = originalLineItem.text;
this.#originalLineItemText.innerText = originalLineItem.text; this.#originalLineItemText.innerText = originalLineItem.text;
this.#setEnableDescriptionAccount(false);
if (this.description === null) { if (this.description === null) {
if (originalLineItem.description === "") { if (originalLineItem.description === "") {
this.#descriptionControl.classList.remove("accounting-not-empty"); this.#descriptionControl.classList.remove("accounting-not-empty");