hillelcoren / invoice-ninja

使用 Laravel 构建的发票、支出和时间跟踪

安装: 112

依赖项: 0

建议者: 0

安全: 1

星星: 8,113

关注者: 216

分支: 2,258

开放问题: 852

类型:项目

v5.10.27 2024-09-02 00:36 UTC

This package is not auto-updated.

Last update: 2024-09-19 04:18:07 UTC


README

Sublime's custom image

v5-develop phpunit Codacy Badge CLA assistant

Invoice Ninja 5

Invoice Ninja 版本 5 已经发布!我们吸取了版本 4 的精华,并加入了最热门的功能,打造了一个前所未有的发票应用程序。查看Invoice Ninja YouTube 频道了解最新动态,或现在就尝试演示

选择您的配置

  • 托管:我们的托管版本是软件即服务(SaaS)解决方案。您可以在5分钟内开始运行,无需担心托管或服务器基础设施。
  • 自托管:对于希望自行管理托管和服务器基础设施的用户。这个版本让您拥有完全控制和灵活性。

托管应用程序中的所有专业和企业功能都包含在开源代码中。我们提供每年30美元的白色标签许可,以从应用程序面向客户的部分移除 Invoice Ninja 品牌。

与我们互动

文档

安装选项和客户端

移动应用

桌面应用

自托管服务器安装

注意:自托管选项支持桌面和移动应用。

推荐提供商

[高级] 快速托管设置

除了官方的Invoice Ninja - 自托管安装指南外,我们还有一些命令供您使用。

git clone --single-branch --branch v5-stable https://github.com/invoiceninja/invoiceninja.git
cp .env.example .env
composer i -o --no-dev

请注意:在 .env 文件中的 APP_KEY 用于加密数据,如果您丢失此信息,将无法运行应用程序。

如果您想加载数据,请运行,并记得配置 .env

php artisan migrate:fresh --seed && php artisan db:seed && php artisan ninja:create-test-data

要运行网络服务器

php artisan serve 

导航到(将 localhost 替换为适当的域名)

http://localhost:8000/setup - To setup your configuration if you did not load sample data.
http://localhost:8000/ - For Administrator Logon

user: [email protected]
pass: password

http://localhost:8000/client/login - For Client Portal

user: [email protected]
pass: password

开发者指南

除了官方的Invoice Ninja - 开发者指南外,我们还有一些见解。

应用程序设计

API 和客户端门户已使用 Laravel 开发,如果您想为该项目做出贡献,熟悉 Laravel 是必不可少的。

检查 API 功能时,最佳起点是 routes/api.php 文件,该文件描述了所有可用的 API 端点。控制器方法然后描述了应用程序每个领域中的所有入口点,例如 InvoiceController / QuoteController

平均 API 请求按照以下路径进入应用程序。

  • 中间件最初处理请求,检查请求的域并提供认证层。
  • 请求随后传递到表单请求(在控制器方法中类型提示),用于提供授权和验证请求。如果成功,请求将被传递到控制器方法中,在这里进行处理,以下是一个示例
public function store(StoreInvoiceRequest $request)
{

    $invoice = $this->invoice_repo->save($request->all(), InvoiceFactory::create(auth()->user()->company()->id, auth()->user()->id));

    $invoice = $invoice->service()
                        ->fillDefaults()
                        ->triggeredActions($request)
                        ->adjustInventory()
                        ->save();

    event(new InvoiceWasCreated($invoice, $invoice->company, Ninja::eventVars(auth()->user() ? auth()->user()->id : null)));

    return $this->itemResponse($invoice);

}

例如,我们正在存储一张新发票,我们将验证过的请求和一个工厂传递到发票仓库中,在那里进行处理和保存。

返回的发票随后通过其服务类(app/Services/Invoice)执行各种操作。

然后触发一个事件,通知应用程序(app/Providers/EventServiceProvider)中的监听器执行非阻塞子任务

最后,发票通过转换(app/Transformers/)并通过Fractal返回作为响应。

开发者环境

使用上述快速托管设置,您可以快速开始构建开发环境。而不是使用

composer i -o --no-dev

使用

composer i -o

这为开发者提供了工具,包括phpunit,允许运行测试套件。

如果您考虑向主仓库贡献,请添加任何新功能/修改的测试。这将大大增加您的PR被接受的机会

此外,如果您计划为主仓库添加任何内容,您可能希望先在Slack上与我们讨论,我们可以协助提供任何技术信息和提供建议。

致谢

安全

如果您在此应用程序中发现安全漏洞,请发送电子邮件至 [email protected]。如果检测到问题,请遵循负责任的披露程序。有关负责任的披露的更多信息,请参阅 此处

许可证

Invoice Ninja 在Elastic License下发布。
有关详细信息,请参阅 LICENSE