All Projects → b1f6c1c4 → ProfessionalAccounting

b1f6c1c4 / ProfessionalAccounting

Licence: AGPL-3.0 license
Accounting software with debit and credit. 使用借贷记帐法的记账软件

Programming Languages

C#
18002 projects
javascript
184084 projects - #8 most used programming language
HTML
75241 projects
ANTLR
299 projects
CSS
56736 projects
shell
77523 projects

Projects that are alternatives of or similar to ProfessionalAccounting

finac
Finac - financial accounting for humans
Stars: ✭ 27 (+28.57%)
Mutual labels:  accounting, double-entry-accounting, double-entry-bookkeeping
accounting
Double-entry bookkeeping library
Stars: ✭ 76 (+261.9%)
Mutual labels:  accounting, bookkeeping
PyGtk-Posting
Open source financial accounting and business management for Linux.
Stars: ✭ 18 (-14.29%)
Mutual labels:  accounting, double-entry-accounting
open-expenses
A curated list of (private) businesses publicly sharing their expenses.
Stars: ✭ 46 (+119.05%)
Mutual labels:  accounting, bookkeeping
Akaunting
Free and Online Accounting Software
Stars: ✭ 4,599 (+21800%)
Mutual labels:  accounting, bookkeeping
Abandon
😌 Simple and Robust Accounting
Stars: ✭ 155 (+638.1%)
Mutual labels:  accounting
Awesome Startup Tools List
List of all tools (apps, services) that startups should use.
Stars: ✭ 188 (+795.24%)
Mutual labels:  accounting
Idempiere
iDempiere. Community Powered Enterprise. Full Open Source Business Suite ERP/CRM/MFG/SCM/POS
Stars: ✭ 137 (+552.38%)
Mutual labels:  accounting
Moneygo
An accounting web application to track personal finances written in Go and React/Bootstrap
Stars: ✭ 138 (+557.14%)
Mutual labels:  accounting
AcornAccounting
A Django-based Accounting System for Egalitarian Communities
Stars: ✭ 27 (+28.57%)
Mutual labels:  accounting
Plaintextaccounting.github.io
The plaintextaccounting.org website, a portal to Ledger, hledger, beancount and co.
Stars: ✭ 230 (+995.24%)
Mutual labels:  accounting
Django Accounting
Accounting pluggable app for Django 1.7+ projects
Stars: ✭ 167 (+695.24%)
Mutual labels:  accounting
Openpapyrus
Sophisticated ERP, CRM, Point-Of-Sale, etc. Open source now. This system is developed since 1996.
Stars: ✭ 158 (+652.38%)
Mutual labels:  accounting
Invoiceneko
An Open Sourced Invoice System developed for anyone who needs to generate out an invoice and manage clients
Stars: ✭ 204 (+871.43%)
Mutual labels:  accounting
Hledger Mode
An Emacs major mode for Hledger
Stars: ✭ 142 (+576.19%)
Mutual labels:  accounting
Scipio Erp
Your Online Business Kit - Build your own business applications. Create your own online shop. Customize to your own needs.
Stars: ✭ 247 (+1076.19%)
Mutual labels:  accounting
Hledger
A reliable, user-friendly Plain Text Accounting tool with command line, terminal and web interfaces.
Stars: ✭ 1,887 (+8885.71%)
Mutual labels:  accounting
Learnpythonforresearch
This repository provides everything you need to get started with Python for (social science) research.
Stars: ✭ 163 (+676.19%)
Mutual labels:  accounting
Ledgersmb
Repository for the LedgerSMB project -- web app for accounting & ERP
Stars: ✭ 222 (+957.14%)
Mutual labels:  accounting
3proxy
3proxy - tiny free proxy server
Stars: ✭ 2,263 (+10676.19%)
Mutual labels:  accounting

ProfessionalAccounting

使用借贷记帐法的记账软件

Appveyor Build Appveyor Tests Coveralls

简介

  • 基于借贷记账法
  • C/S架构
  • 使用DSL(Domain Specfic Langauge)来增删改查
  • 后端
    • 单体架构,业务逻辑使用C# 10.0编写
    • 数据库采用MongoDB
    • 使用.NET 7.0平台编译
    • 使用nginx反向代理,支持TLSv1.3、HTTP/3
    • 使用docker部署
  • 前端
    • 使用Redux状态管理
    • 使用p5.js绘制UI
    • 使用webpack打包

安装与配置

准备

首先准备一台Linux服务器,安装以下软件:

  • docker,推荐采用get.docker.com
  • openssl(请自行Google安装方法)

配置记账系统功能

为了方便地从GitHub下载单独文件(而不用下载整个repo的整个历史), 此处推荐大家使用git-get来下载。

  1. ssh登录服务器
  2. 下载docker-compose.yml文件:
    git get b1f6c1c4/ProfessionalAccounting -- docker-compose.yml
  3. 下载示例配置文件夹,放在/data/accounting/config.d/
    mkdir -p /data/accounting
    git get -o /data/accounting/config.d b1f6c1c4/ProfessionalAccounting -- example/config.d/
  4. 修改必须修改的配置文件:
    • BaseCurrency.xml - 记账本位币
    • Symbol.xml - 货币符号表
    • Titles.xml - 记账科目列表
    • Carry.xml - 期末结转规则
    • Exchange.xml - 汇率查询API(fixer.ioCoinMarketCap)的配置
  5. 修改可选的配置文件:
    • Abbr.xml - 登记新记账凭证时使用的缩写列表
    • Cash.xml - 现金流插件相关配置
    • Composite.xml - 常用检索式列表
    • Util.xml - 快速登记记账凭证插件的配置

配置服务器和客户端x509证书

  1. 将服务器证书和私钥(server.crtserver.key)放在服务器的/data/accounting/certs目录下
    1. 如果你没有服务器证书,推荐使用 acme.sh 来免费获得一个
  2. 在服务器上创建dhparams:
    openssl dhparam -out /data/accounting/certs/dhparam.pem 2048
  3. 创建自签名的客户端证书和私钥: (注意:如果客户端机器未安装openssl,则在服务器上创建客户端的证书和私钥,并把加密后的私钥client.p12传回客户端)
    1. 在客户端机器上创建证书和私钥:
    openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.crt -days 1825 -nodes
    chmod 0400 key.pem
    1. 将证书上传服务器:
    scp ./cert.crt <server>:/data/accounting/certs/client.crt
    1. 将证书和私钥封装成.p12格式,删除原来的.pem文件: (这一步的目的是方便在客户端上安装证书)
    openssl pkcs12 -export -inkey key.pem -in cert.crt -out client.p12 && rm -f key.pem
  4. 在客户端上安装证书:
    1. 恕不赘述,请自行Google install p12 certificate on XXXXXX=Linux/FreeBSD/Windows/MacOS/iOS/iPadOS/...)

启动

直接使用docker-compose启动,将在18080端口侦听请求:

docker-compose up -d

基本使用方法

记账(记账凭证的增加、修改与删除)

记账过程

  1. 在客户端上使用浏览器访问服务器的18080端口:https://<server>:18080/
  2. 可以看到用户界面分为两部分:上面的一行命令框和下面的编辑器
  3. 在命令框中,输入命令:login <username>并按回车
    • <username>是你在记账系统中的用户名
    • 无需注册,没有密码,用户名只是个代号而已
    • 用户名会在前端存储在localstorage中,无需每次login
  4. 按tab可以在命令框和编辑器之间切换
  5. 执行空白命令会在编辑器中添加一个空的记账凭证模板(@new Voucher { }@
  6. 在模板中需要填写记账凭证的内容,也就是用什么货币关于什么、交易了多少钱
    • 例子:T1001 -5
      • 字面意思是:我(刚刚login的用户名)、用本位币(参考BaseCurrency.xml)、关于库存现金(参考Titles.xml)、交易了-5元
      • 翻译过来就是:现金少了5元人民币(假设你没有修改BaseCurrency.xml
    • 例子:sp 5
      • 字面意思是:我、用本位币、关于食品(参考Abbr.xml)、交易了5元
      • 翻译过来就是:食品开销增加了5元人民币
    • 两个例子合在一起,就表明了“今天我用5元人民币现金购买了5元的食品”
  7. 按Alt+Enter保存记账凭证,可以看到增加了不少信息:
    • ^5edc...^ 这是mongoDB的_id,用于唯一标识记账凭证
    • 20200606 这是交易发生的日期,在保存记账凭证的时刻被记录下来了
    • // 库存现金 这是注释,以免使用者忘记记账科目
    • T1001 -5 与保存之前的写法和语义完全相同
    • T660206 '食品' 5 这是从sp 5翻译过来的完整写法
      • Abbr.xml里面已经规定了sp就是T660206 '食品'的简称,所以在保存记账凭证时变回原样也不足为奇
  8. 按Alt+Delete可以删除已经保存的记账凭证
    • 如果记账凭证尚且没有保存,那么它也就无所谓删除,一旦刷新页面就会丢掉
  9. 对于已经保存了的记账凭证,再次按Alt+Enter可以修改它的内容

注意:记账凭证不能嵌套,如果不小心在一个记账凭证模板里面又嵌套了一个模板,请立即按Ctrl+Z撤销。

检索

检索过程

在命令框中执行检索命令可以列出相应的记账凭证:

注意:执行命令会覆盖下方编辑器中的全部内容;如果你希望在编辑器中添加而非覆盖,请在命令框中按Shift+Enter。

  • . - 今天都发生了什么交易
  • .. - 昨天都发生了什么交易
  • T1001 . - 今天都发生了什么现金交易
  • T660206 食品 0 - 这个月都发生了什么食品交易
    • 注意这里不能使用sp缩写
  • unsafe 2020 - 在2020年都发生了什么交易
    • 由于可能返回非常多的结果,这里需要加上关键词unsafe
  • 关于记账凭证检索式(DSL)的具体语法,可以在命令框中输入?命令调出帮助文档

汇总

汇总过程

在命令框中执行分类汇总命令可以对帐务数据进行统计:

  • ` - 我的基本财务报表
  • 0 ` - 我这个月的资金变动情况
  • ~-1 ` - 我上个月的基本财务报表
  • 关于分类汇总检索式(DSL)的具体语法,可以在命令框中输入?命令调出帮助文档

其他功能

开发

项目文件结构

  • nginx - 前端
  • AccountingServer - HTTP Server
  • AccountingServer.Shell - 记账凭证的序列化/反序列化,分类汇总的显示
  • AccountingServer.BLL - 汇率转换,分类汇总,固定资产处理,摊销处理
  • AccountingServer.DAL - mongoDB数据库访问
  • AccountingServer.Entities - 基本对象结构定义
  • AccountingServer.QueryGeneration - 基于Antlr4的DSL Parser
  • AccountingServer.Test - 单元测试和集成测试

本地后端开发环境

在Linux上构建开发环境

  1. 请先安装以下工具:

  2. 启动测试数据库:

    docker run -d --rm --name mongo -p 27017:27017 mongo
  3. 启动Rider即可。

在Windows上构建开发环境

  1. 请先安装以下工具:
  2. 启动测试数据库:在services.msc中启动MongoDB服务。
  3. 启动Visual Studio即可。

本地前端开发环境

  1. 请先安装以下工具:

  2. 下载所需npm包:

    cd nginx && npm install
  3. 启动webpack开发环境:

    npm run serve

许可

本项目以GNU AGPL v3.0协议开源。 This project is licensed under GNU AGPL v3.0 only. (AGPL-3.0-only).

注解:(请参阅协议原文,以下解释没有法律效力)

  • 若个人开发者采用客户端证书的方式将端口保护起来,阻止自己以外的其他任何人访问, 这种行为不算“making available to the public”,也不构成协议中的 “propagate/convey/remote network interaction”, 因此将不受GNU AGPL v3.0协议的限制
  • 但是若个人开发者不采用任何方式保护端口,其他人将有可能通过网络与该软件交互 (“remote network interaction”),这种行为就算作“convey”了。 这种情况下该行为受到GNU AGPL v3.0协议的限制,必须提供与后端程序的版本一致完整的源代码。
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].