PHPackages                             ismaildasci/laravel-sapb1-toolkit - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. ismaildasci/laravel-sapb1-toolkit

ActiveLibrary[Database &amp; ORM](/categories/database)

ismaildasci/laravel-sapb1-toolkit
=================================

Complete business logic toolkit for SAP Business One Service Layer - Eloquent-like ORM, Actions, Builders, DTOs, Caching, Change Tracking, and Local Database Sync

v3.0.0(3mo ago)049[2 PRs](https://github.com/ismaildasci/sapb1-laravel-toolkit/pulls)1MITPHPPHP ^8.4CI passing

Since Jan 3Pushed 1mo agoCompare

[ Source](https://github.com/ismaildasci/sapb1-laravel-toolkit)[ Packagist](https://packagist.org/packages/ismaildasci/laravel-sapb1-toolkit)[ Docs](https://github.com/ismaildasci/laravel-sapb1-toolkit)[ GitHub Sponsors](https://github.com/ismaildasci)[ RSS](/packages/ismaildasci-laravel-sapb1-toolkit/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (13)Versions (25)Used By (1)

SAP Business One Laravel Toolkit
================================

[](#sap-business-one-laravel-toolkit)

[![Latest Version on Packagist](https://camo.githubusercontent.com/13432ea795dc83e96fcf45b3762acb6502f6852c6859534adcf0f1dc375ce21f/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f69736d61696c64617363692f6c61726176656c2d73617062312d746f6f6c6b69742e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/ismaildasci/laravel-sapb1-toolkit)[![GitHub Tests Action Status](https://camo.githubusercontent.com/a5dc0424b4a836fe6af9f5d8e8b7b68f784abbc23397e85e5c8bf065389d86ab/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f69736d61696c64617363692f6c61726176656c2d73617062312d746f6f6c6b69742f72756e2d74657374732e796d6c3f6272616e63683d6d61696e266c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/ismaildasci/laravel-sapb1-toolkit/actions?query=workflow%3Arun-tests+branch%3Amain)[![GitHub Code Style Action Status](https://camo.githubusercontent.com/4dee23bab6e8a9b357c83f6667434915d898e580a8f5b840a8df21c8aa409d52/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f69736d61696c64617363692f6c61726176656c2d73617062312d746f6f6c6b69742f6669782d7068702d636f64652d7374796c652d6973737565732e796d6c3f6272616e63683d6d61696e266c6162656c3d636f64652532307374796c65267374796c653d666c61742d737175617265)](https://github.com/ismaildasci/laravel-sapb1-toolkit/actions?query=workflow%3A%22Fix+PHP+code+style+issues%22+branch%3Amain)[![Total Downloads](https://camo.githubusercontent.com/18cd38f2871720a1842cb7e7d673f3e4371a25773e178283191b01f4d6b239ee/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f69736d61696c64617363692f6c61726176656c2d73617062312d746f6f6c6b69742e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/ismaildasci/laravel-sapb1-toolkit)[![PHP Version](https://camo.githubusercontent.com/73a2f3f025b273f64d144c4208359aa565907cf7bb1c03fbde88d93da65edd61/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f69736d61696c64617363692f6c61726176656c2d73617062312d746f6f6c6b69742e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/ismaildasci/laravel-sapb1-toolkit)[![License](https://camo.githubusercontent.com/6401facaa33dd2fd0544dbfa8136fbfa7b03d9b5c83484a731e20df0a7d441c1/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f69736d61696c64617363692f6c61726176656c2d73617062312d746f6f6c6b69742e7376673f7374796c653d666c61742d737175617265)](LICENSE.md)

A complete business logic toolkit for SAP Business One Service Layer integration in Laravel. Built on top of [laravel-sapb1](https://github.com/ismaildasci/laravel-sapb1).

Features
--------

[](#features)

ComponentCountDescription**Models**54Eloquent-like ORM for SAP B1 entities**Actions**110CRUD operations for all SAP B1 entities**Builders**122+Fluent document construction**DTOs**145+Type-safe data transfer objects**Services**17Business logic orchestration**Enums**36SAP B1 constants and status codes**Commands**7Artisan CLI commands**Cache**2Priority-based caching system**Modules:** Sales, Purchase, Inventory, Finance, Business Partner, Production, HR, Admin, Service

### Key Capabilities

[](#key-capabilities)

- **Eloquent-like ORM** - Query SAP B1 entities with familiar Laravel syntax
- **UDF Support** - Read/write User Defined Fields on any entity
- **Local Caching** - Priority-based cache with entity-level configuration
- **Change Tracking** - Polling-based change detection for SAP entities
- **Local Database Sync** - Sync SAP data to local database with soft deletes

Requirements
------------

[](#requirements)

- PHP 8.4+
- Laravel 11.x or 12.x
- [laravel-sapb1](https://github.com/ismaildasci/laravel-sapb1) ^1.0

Installation
------------

[](#installation)

```
composer require ismaildasci/laravel-sapb1-toolkit
```

```
php artisan vendor:publish --tag="sapb1-toolkit-config"
```

Quick Start
-----------

[](#quick-start)

### Eloquent-like Models

[](#eloquent-like-models)

```
use SapB1\Toolkit\Models\Sales\Order;

$orders = Order::where('DocTotal', '>', 1000)
    ->where('DocumentStatus', 'bost_Open')
    ->orderBy('DocDate', 'desc')
    ->with('partner')
    ->get();

$order = Order::create([
    'CardCode' => 'C001',
    'DocumentLines' => [
        ['ItemCode' => 'ITEM001', 'Quantity' => 10, 'Price' => 100],
    ],
]);
```

### Actions

[](#actions)

```
use SapB1\Toolkit\Actions\Sales\OrderAction;

$orderAction = app(OrderAction::class);

$order = $orderAction->create([
    'CardCode' => 'C001',
    'DocumentLines' => [
        ['ItemCode' => 'ITEM001', 'Quantity' => 10, 'Price' => 100],
    ],
]);

$orderAction->close(123);
```

### Builders

[](#builders)

```
use SapB1\Toolkit\Builders\Sales\OrderBuilder;

$data = OrderBuilder::create()
    ->cardCode('C001')
    ->docDate('2024-01-15')
    ->addLine(fn ($line) => $line
        ->itemCode('ITEM001')
        ->quantity(10)
        ->price(100)
    )
    ->build();
```

### Services

[](#services)

```
use SapB1\Toolkit\Services\DocumentFlowService;

$flow = app(DocumentFlowService::class);
$invoice = $flow->orderToInvoice(123);
$delivery = $flow->orderToDelivery(123);
```

### UDF Support (v2.4+)

[](#udf-support-v24)

```
use SapB1\Toolkit\Models\Sales\Order;

$order = Order::find(123);

// Read UDFs
$value = $order->getUdf('CustomField');
$allUdfs = $order->getUdfs();

// Write UDFs
$order->setUdf('CustomField', 'value');
$order->save();

// Builder support
$data = OrderBuilder::create()
    ->cardCode('C001')
    ->udf('CustomField', 'value')
    ->build();
```

### Local Cache (v2.5+)

[](#local-cache-v25)

```
use SapB1\Toolkit\Models\Inventory\Item;

// Query-level cache control
$item = Item::cache()->find('A001');           // Enable with default TTL
$item = Item::cache(600)->find('A001');        // 10 minute TTL
$item = Item::noCache()->find('A001');         // Disable cache

// Flush cache
Item::flushCache();
Item::forgetCached('A001');
```

### Change Tracking (v2.6+)

[](#change-tracking-v26)

```
use SapB1\Toolkit\ChangeTracking\ChangeTracker;

$tracker = ChangeTracker::for('Orders')
    ->primaryKey('DocEntry')
    ->detectCreated(true)
    ->detectUpdated(true);

$changes = $tracker->poll();

foreach ($changes as $change) {
    if ($change->isCreated()) {
        // Handle new order
    }
}
```

### Local Database Sync (v2.7+)

[](#local-database-sync-v27)

```
# Create migrations for entities you want to sync
php artisan sapb1:sync-setup Items BusinessPartners Orders

# Run migrations
php artisan migrate

# Sync data
php artisan sapb1:sync Items                    # Incremental sync
php artisan sapb1:sync Items --full             # Full sync with delete detection
php artisan sapb1:sync-status                   # Check sync status
```

```
use SapB1\Toolkit\Sync\LocalSyncService;

$syncService = app(LocalSyncService::class);

// Sync to local database
$result = $syncService->sync('Items');
// SyncResult { created: 10, updated: 140, deleted: 0, duration: 1.23s }

// Full sync with soft delete detection
$result = $syncService->fullSyncWithDeletes('Items');

// Scheduler integration
$schedule->command('sapb1:sync Items')->hourly();
$schedule->command('sapb1:sync Items --full')->weekly();
```

Artisan Commands
----------------

[](#artisan-commands)

CommandDescription`sapb1:sync {entity}`Sync SAP data to local database`sapb1:sync-setup {entities}`Create sync migrations`sapb1:sync-status`Show sync status`sapb1:watch {entity}`Watch for entity changes`sapb1:cache`Manage entity cache`sapb1:test-connection`Test SAP B1 connection`sapb1:generate`Generate toolkit componentsDocumentation
-------------

[](#documentation)

TopicDescription[Installation](docs/installation.md)Setup and configuration[Models](docs/models.md)Eloquent-like ORM[Actions](docs/actions.md)CRUD operations[Builders](docs/builders.md)Fluent document builders[DTOs](docs/dtos.md)Data transfer objects[Services](docs/services.md)Business logic[Enums](docs/enums.md)SAP B1 constants[Validation](docs/validation.md)Laravel validation rules[Exceptions](docs/exceptions.md)Error handlingDirectory Structure
-------------------

[](#directory-structure)

```
src/
├── Actions/          # CRUD operations (110 files)
├── Builders/         # Fluent builders (122+ files)
├── DTOs/             # Data Transfer Objects (145+ files)
├── Models/           # Eloquent-like ORM (54 files)
├── Services/         # Business logic (17 files)
├── Enums/            # SAP B1 constants (36 files)
├── Cache/            # Caching infrastructure
├── ChangeTracking/   # Change detection system
├── Sync/             # Local database sync
├── Events/           # Document lifecycle events
├── Exceptions/       # Domain-specific exceptions
├── Rules/            # Laravel validation rules
├── Casts/            # Attribute casts
└── Commands/         # Artisan commands (7 files)

```

Testing
-------

[](#testing)

```
composer test        # Run tests
composer analyse     # Static analysis
composer format      # Code formatting
```

Changelog
---------

[](#changelog)

See [CHANGELOG.md](CHANGELOG.md) for version history.

Contributing
------------

[](#contributing)

See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.

Security
--------

[](#security)

Report vulnerabilities via [security policy](../../security/policy).

License
-------

[](#license)

MIT License. See [LICENSE.md](LICENSE.md) for details.

---

**Author:** [İsmail Daşcı](https://github.com/ismaildasci)

###  Health Score

44

—

FairBetter than 92% of packages

Maintenance85

Actively maintained with recent releases

Popularity8

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity61

Established project with proven stability

 Bus Factor1

Top contributor holds 96.1% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

22

Last Release

119d ago

Major Versions

v1.5.0 → v2.0.02026-01-03

v2.9.0 → v3.0.02026-01-14

### Community

Maintainers

![](https://www.gravatar.com/avatar/c7789e5962900ed9ddc66344eb712187ab1f04c061fa351aa8c7ca049120daa4?d=identicon)[ismaildasci](/maintainers/ismaildasci)

---

Top Contributors

[![ismaildasci](https://avatars.githubusercontent.com/u/109577378?v=4)](https://github.com/ismaildasci "ismaildasci (49 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (1 commits)")[![github-actions[bot]](https://avatars.githubusercontent.com/in/15368?v=4)](https://github.com/github-actions[bot] "github-actions[bot] (1 commits)")

---

Tags

laravelormeloquentcachedtosyncservice layeractionsERPtoolkitsapsap-business-onesap-b1buildersudf

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/ismaildasci-laravel-sapb1-toolkit/health.svg)

```
[![Health](https://phpackages.com/badges/ismaildasci-laravel-sapb1-toolkit/health.svg)](https://phpackages.com/packages/ismaildasci-laravel-sapb1-toolkit)
```

###  Alternatives

[dyrynda/laravel-model-uuid

This package allows you to easily work with UUIDs in your Laravel models.

4802.8M8](/packages/dyrynda-laravel-model-uuid)[mostafaznv/laracache

LaraCache is a customizable cache trait to cache queries on model's events

27246.8k1](/packages/mostafaznv-laracache)[lacodix/laravel-model-filter

A Laravel package to filter, search and sort models with ease while fetching from database.

17649.9k](/packages/lacodix-laravel-model-filter)[elipzis/laravel-cacheable-model

Automatic query-based model cache for your Laravel app

15546.1k](/packages/elipzis-laravel-cacheable-model)[ymigval/laravel-model-cache

Laravel package for caching Eloquent model queries

7642.2k3](/packages/ymigval-laravel-model-cache)[giacomomasseron/laravel-models-generator

Generate Laravel models from an existing database

484.2k](/packages/giacomomasseron-laravel-models-generator)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
