zsolt148/szamlazzhu

这是我的包 szamlazzhu

v1.1.1 2023-12-01 15:59 UTC

This package is auto-updated.

Last update: 2024-09-07 08:09:55 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

基于 https://github.com/zoparga/laravel-szamlazzhu Laravel szamlazzhu 简单 Facade 构建。

安装

您可以通过 composer 安装此包

composer require zsolt148/szamlazzhu

您可以使用以下命令发布和运行迁移

php artisan vendor:publish --tag="szamlazzhu-migrations"
php artisan migrate

您可以使用以下命令发布配置文件

php artisan vendor:publish --tag="szamlazzhu-config"

这是已发布配置文件的内容

return [

    /**
     * Global disabled/enable function
     */
    'enabled' => env('SZAMLAZZ_HU_ENABLED', false),

    /**
     * Global discount disabled/enable function
     */
    'discount_enabled' => env('SZAMLAZZ_HU_DISCOUNT_ENABLED', false),

    /**
     * Send invoice/receipt notifications
     */
    'send_notifications' => env('SZAMLAZZ_HU_SEND_NOTIFICATIONS', true),

    /**
     * Create/cancel invoice/receipt routes
     */
    'route' => [
        'prefix' => 'szamlazzhu',
        'name' => 'szamlazzhu.',
        'middleware' => ['web'],
    ],

    /*
     * These merchant details will be used by default.
     * You can override these values.
     * */
    'merchant' => [
        'bank_name' => env('SZAMLAZZ_HU_MERCHANT_BANK_NAME'),
        'bank_account_number' => env('SZAMLAZZ_HU_MERCHANT_BANK_ACCOUNT_NUMBER'),
        'reply_email' => env('SZAMLAZZ_HU_MERCHANT_REPLY_EMAIL'),
    ],

    /*
     * Invoice/Receipt prefix
     */
    'prefix' => env('SZAMLAZZ_HU_PREFIX', 'PRE'),

    /*
     * API Client settings
     */
    'client' => [

        /*
         * Authentication credentials.
         * */
        'credentials' => [
            'api_key' => env('SZAMLAZZ_HU_API_KEY'),
            'username' => env('SZAMLAZZ_HU_USERNAME'),
            'password' => env('SZAMLAZZ_HU_PASSWORD'),
        ],

        /*
         * You can enable the certificate based communication.
         * You do not need to provide password if you'll use szamlazz.hu's own certificate
         * */
        'certificate' => [
            'enabled' => false,
            'disk' => 'local',
            'path' => 'szamlazzhu/cacert.pem', // Relative to disk root
        ],

        /*
         * HTTP request timeout (in seconds)
         */
        'timeout' => 30,

        /*
         * Base URI used to reach API
         * */
        'base_uri' => env('SZAMLAZZ_HU_BASE_URI', 'https://www.szamlazz.hu/'),

        /*
         * Client can automatically save / update invoice PDF files if enabled
         * */
        'storage' => [
            'auto_save' => true,
            'disk' => 'public',
            'path' => 'invoices',
        ],
    ],

用法

使用全局助手

// Access the invoice service
szamlazzhu()->invoice();
szamlazzhu('invoice');

// Access the receipt service
szamlazzhu()->receipt();
szamlazzhu('receipt');

// Create invoice/receipt - dispatches an event
szamlazzhu()->invoice()->create($invoiceable);
szamlazzhu()->receipt()->create($invoiceable);

// Create now
szamlazzhu()->invoice()->createNow($invoiceable);
szamlazzhu()->receipt()->createNow($invoiceable);

// Cancel invoice/receipt
szamlazzhu()->invoice()->cancel($invoice);
szamlazzhu()->receipt()->cancel($receipt);

使用外观

use Zsolt148\Szamlazzhu\Facades\Szamlazzhu;

// Access the invoice service
Szamlazzhu::invoice();

// Access the receipt service
Szamlazzhu::receipt();

// Create invoice/receipt - dispatches an event
Szamlazzhu::invoice()->create($invoiceable);
Szamlazzhu::receipt()->create($invoiceable);

// Create now
Szamlazzhu::invoice()->createNow($invoiceable);
Szamlazzhu::receipt()->createNow($invoiceable);

// Cancel invoice/receipt
Szamlazzhu::invoice()->cancel($invoice);
Szamlazzhu::receipt()->cancel($receipt);

您希望作为发票/收据项的模型应该实现 Invoiceable/Receiptable 接口,以及 HasInvoice/HasReceipt 特性。

use Zsolt148\Szamlazzhu\Interfaces\Invoiceable;
use Zsolt148\Szamlazzhu\Traits\HasInvoices;

class Order implements Invoiceable 
{
    use HasInvoices;
    ...
}

您希望作为发票/收据项的模型应该实现 ArrayableItem

如果模型只有一个项,它也可以是 Order 模型。

use zoparga\SzamlazzHu\Contracts\ArrayableItem;

class OrderItem implements ArrayableItem
{
    ...
}

使用默认路由,它应该接收一个类字符串和一个 ID。

返回一个 JSON 响应

await axios.post(route('szamlazzhu.create-receipt'), {
    class: this.model.class,
    id: this.model.id,
}).then(resp => {
    console.log(resp.data)
})

测试

composer test

变更日志

有关最近更改的更多信息,请参阅 CHANGELOG

贡献

有关详细信息,请参阅 CONTRIBUTING

安全漏洞

有关如何报告安全漏洞的详细信息,请审查 我们的安全策略

致谢

许可

MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件