Π Π΄Π°Π½Π½ΠΎΠΌ sdk ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ ΡΠ΅ΠΆΠΈΠΌΠ° (ΠΎΡΡΠ»Π°ΠΉΠ½ Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½)
https://api.checkbox.in.ua/api/redoc
https://api.checkbox.in.ua/api/docs
https://docs.google.com/document/d/1Zhkc4OljKjea_235YafVvZunkWSp6TCAKeckhgl8t2w/edit
composer require khoroshun/checkbox-in-ua-php-sdk
require_once 'vendor/autoload.php';
Π°Π΄ΡΠ΅Ρ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½ ΡΠ΅ΡΠ²Π΅ΡΠ° http://api.checkbox.in.ua
Π°Π΄ΡΠ΅Ρ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° http://dev-api.checkbox.in.ua
ΡΠ΅ΠΊΡΡΠ°Ρ Π²Π΅ΡΡΠΈΡ API - v1
$config = new \khoroshun\Checkbox\Config([
\khoroshun\Checkbox\Config::API_URL => 'https://dev-api.checkbox.in.ua/api/v1',
\khoroshun\Checkbox\Config::LOGIN => 'Π»ΠΎΠ³ΠΈΠ½ ΠΊΠ°ΡΡΠΈΡΠ°',
\khoroshun\Checkbox\Config::PASSWORD => 'ΠΏΠ°ΡΠΎΠ»Ρ ΠΊΠ°ΡΡΠΈΡΠ°', //or
\khoroshun\Checkbox\Config::PINCODE => 02301230440,
\khoroshun\Checkbox\Config::LICENSE_KEY => 'ΠΊΠ»ΡΡ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΈ ΠΊΠ°ΡΡΡ'
]);
$api = new \khoroshun\Checkbox\CheckboxJsonApi($config);
$api->signInCashier();
$api->signOutCashier();
\khoroshun\Checkbox\Errors\InvalidCredentials - Π½Π΅ Π²Π΅ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π»ΠΎΠ³ΠΈΠ½Π° ΠΈΠ»ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ
\khoroshun\Checkbox\Errors\EmptyResponse - ΠΏΡΡΡΠΎΠΉ ΠΎΡΠ²Π΅Ρ
\khoroshun\Checkbox\Errors\Validation - ΠΎΡΠΈΠ±ΠΊΠ° Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ (Π΅ΡΡΡ Π΄Π΅ΡΠ°Π»ΡΠ½ΡΠ΅. Π΄Π°Π½Π½ΡΠ΅ $err->getDetail())
\khoroshun\Checkbox\Errors\NoActiveShift - Π½Π΅Ρ Π°ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΡΠΌΠ΅Π½Ρ
\khoroshun\Checkbox\Errors\AlreadyOpenedShift - ΡΠΌΠ΅Π½Π° ΡΠΆΠ΅ ΠΎΡΠΊΡΡΡΠ°
\Exception - ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ°
$api->getCashierProfile() : \khoroshun\Checkbox\Models\Cashier\Cashier // Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΡΠΎΡΠΈΠ»Ρ ΠΊΠ°ΡΡΠΈΡΠ°
$api->getCashierShift() : \khoroshun\Checkbox\Models\Shifts\Shift // Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅ΠΊΡΡΡΡ ΡΠΌΠ΅Π½Ρ ΠΊΠ°ΡΡΠΈΡΠ°
$api->getShift('ΠΈΠ΄ ΡΠΌΠ΅Π½Ρ') : \khoroshun\Checkbox\Models\Shifts\Shift // Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΌΠ΅Π½Ρ ΠΏΠΎ ΠΈΠ΄
$api->getShifts() : \khoroshun\Checkbox\Models\Shifts\Shifts // Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΌΠ΅Π½Ρ
ΠΈΠ»ΠΈ
$api->getShifts(
new \khoroshun\Checkbox\Models\Shifts\ShiftsQueryParams(
[
\khoroshun\Checkbox\Models\Shifts\ShiftsQueryParams::STATUS_CLOSED,
\khoroshun\Checkbox\Models\Shifts\ShiftsQueryParams::STATUS_OPENED
], // ΡΡΠ°ΡΡΡΡ ΡΠΌΠ΅Π½
false, // desc - ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° (false or true)
2, // limit
0 // offset
)
): \khoroshun\Checkbox\Models\Shifts\Shifts // Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΌΠ΅Π½Ρ Ρ ΡΡΠ΅ΡΠΎΠΌ ΡΠΈΠ»ΡΡΡΠ°
$api->createShift() : \khoroshun\Checkbox\Models\Shifts\CreateShift // ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠΌΠ΅Π½Ρ
$api->closeShift() : \khoroshun\Checkbox\Models\Shifts\CloseShift // Π·Π°ΠΊΡΡΠ²Π°Π΅Ρ ΡΠΌΠ΅Π½Ρ
$api->getCashRegisters() : \khoroshun\Checkbox\Models\CashRegisters\CashRegisters // Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠ°ΡΡΠΎΠ²ΡΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΎΡΡ
ΠΈΠ»ΠΈ
$api->getCashRegisters(
new \khoroshun\Checkbox\Models\CashRegisters\CashRegistersQueryParams(
true, // inUse - ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΈΠ»ΠΈ Π½Π΅Ρ (true or false)
3, // limit
0 // offset
)
) : \khoroshun\Checkbox\Models\CashRegisters\CashRegisters // Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠ°ΡΡΠΎΠ²ΡΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΎΡΡ ΠΏΠΎ ΡΠΈΠ»ΡΡΡΡ
$api->getCashRegister('ΠΈΠ΄ ΠΊΠ°ΡΡΡ') : \khoroshun\Checkbox\Models\CashRegisters\CashRegister // Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠ°ΡΡΡ ΠΏΠΎ Π°ΠΉΠ΄ΠΈ
$api->getCashRegisterInfo() : \khoroshun\Checkbox\Models\CashRegisters\CashRegisterInfo // Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΊΠ°ΡΡΡ
$api->getAllTaxes() : \khoroshun\Checkbox\Models\Receipts\Taxes\GoodTaxes // Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ Π½Π°Π»ΠΎΠ³ΠΈ
$api->getTransactions(
new \khoroshun\Checkbox\Models\Transactions\TransactionsQueryParams(
[
\khoroshun\Checkbox\Models\Transactions\TransactionsQueryParams::STATUS_CREATED,
\khoroshun\Checkbox\Models\Transactions\TransactionsQueryParams::STATUS_DONE,
\khoroshun\Checkbox\Models\Transactions\TransactionsQueryParams::STATUS_SIGNED
], // ΡΡΠ°ΡΡΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ
[
\khoroshun\Checkbox\Models\Transactions\TransactionsQueryParams::TYPE_RECEIPT,
\khoroshun\Checkbox\Models\Transactions\TransactionsQueryParams::TYPE_SHIFT_OPEN,
\khoroshun\Checkbox\Models\Transactions\TransactionsQueryParams::TYPE_Z_REPORT
], // ΡΠΈΠΏΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ
2, // limit
0 // offset
)
) : \khoroshun\Checkbox\Models\Transactions\Transactions // Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΏΠΎ ΡΠΈΠ»ΡΡΡΡ
$api->getTransaction('ΠΈΠ΄ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ') : \khoroshun\Checkbox\Models\Transactions\Transaction // Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ ΠΏΠΎ Π°ΠΉΠ΄ΠΈ
$api->updateTransaction(
'ΠΈΠ΄ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ',
base64_encode('request_signature')
) : \khoroshun\Checkbox\Models\Transactions\Transaction // ΠΌΠ΅Π½ΡΠ΅Ρ request_signature Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΡΡΠ°ΡΡΡ PENDING
$api->createXReport() : \khoroshun\Checkbox\Models\Shifts\ZReport // ΡΠΎΠ·Π΄Π°Π΅Ρ Ρ
ΠΎΡΡΠ΅Ρ
$api->getReport('ΠΈΠ΄ ΠΎΡΡΠ΅ΡΠ°') : \khoroshun\Checkbox\Models\Shifts\ZReport // Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΎΡΡΠ΅ΡΠ° ΠΏΠΎ Π°ΠΉΠ΄ΠΈ
$api->getReportText('ΠΈΠ΄ ΠΎΡΡΠ΅ΡΠ°') : string // Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΎΡΡΠ΅ΡΠ° ΠΏΠΎ Π°ΠΉΠ΄ΠΈ Π² Π²ΠΈΠ΄Π΅ ΡΠ΅ΠΊΡΡΠ°
ΠΈΠ»ΠΈ
$api->getReportText('ΠΈΠ΄ ΠΎΡΡΠ΅ΡΠ°', 60) : string // Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΎΡΡΠ΅ΡΠ° ΠΏΠΎ Π°ΠΉΠ΄ΠΈ Π² Π²ΠΈΠ΄Π΅ ΡΠ΅ΠΊΡΡΠ°, Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΡΠΈΡΠΈΠ½Ρ ΡΠ΅ΠΊΡΡΠ°
$api->getPeriodicalReport(
new \khoroshun\Checkbox\Models\Reports\PeriodicalReportQueryParams(
'2020-10-27 00:00:00', // Π΄Π°ΡΠ° Ρ
'2020-11-04 13:15:00', // Π΄Π°ΡΠ° ΠΏΠΎ
60 // ΡΠΈΡΠΈΠ½Π° ΡΠ΅ΠΊΡΡΠ°
)
) : string // Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΎΡΡΠ΅ΡΠ° Π·Π° ΠΏΠ΅ΡΠΈΠΎΠ΄ ΠΏΠΎ ΡΠΈΠ»ΡΡΡ
$api->getReports(
new \khoroshun\Checkbox\Models\Reports\ReportsQueryParams(
'2020-10-27 00:00:00', // Π΄Π°ΡΠ° Ρ
'2020-11-04 13:15:00', // Π΄Π°ΡΠ° ΠΏΠΎ
[], // ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ΄ ΡΠΌΠ΅Π½
false, // is_z_report (true or false)
true, // desc - ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° (false or true)
3, // limit
0 // offset
)
) : \khoroshun\Checkbox\Models\Reports\Reports // Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΡΡΠ΅ΡΡ ΠΏΠΎ ΡΠΈΠ»ΡΡΡΡ
$api->getReceipts() : \khoroshun\Checkbox\Models\Receipts\Receipts // Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅ΠΊΠΈ
$api->getReceipts(
new \khoroshun\Checkbox\Models\Receipts\ReceiptsQueryParams(
'', // fiscal code
'', // serial
false, // desc - ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° (false or true)
2, // limit
0 // offset
)
) : \khoroshun\Checkbox\Models\Receipts\Receipts // Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅ΠΊΠΈ ΠΏΠΎ ΡΠΈΠ»ΡΡΡΡ
$api->getReceipt('ΠΈΠ΄ ΡΠ΅ΠΊΠ°') : \khoroshun\Checkbox\Models\Receipts\Receipt // Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅ΠΊ ΠΏΠΎ Π°ΠΉΠ΄ΠΈ
$api->getReceiptPdf('ΠΈΠ΄ ΡΠ΅ΠΊΠ°') : pdf // Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅ΠΊ ΠΏΠΎ Π°ΠΉΠ΄ΠΈ Π² Π²ΠΈΠ΄Π΅ ΠΏΠ΄Ρ
$api->getReceiptHtml('ΠΈΠ΄ ΡΠ΅ΠΊΠ°') : string // Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅ΠΊ ΠΏΠΎ Π°ΠΉΠ΄ΠΈ Π² Π²ΠΈΠ΄Π΅ html
$api->getReceiptText('ΠΈΠ΄ ΡΠ΅ΠΊΠ°') : string // Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅ΠΊ ΠΏΠΎ Π°ΠΉΠ΄ΠΈ Π² Π²ΠΈΠ΄Π΅ ΡΠ΅ΠΊΡΡΠ°
$api->getReceiptQrCodeImage('ΠΈΠ΄ ΡΠ΅ΠΊΠ°') : string // Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅ΠΊ ΠΏΠΎ Π°ΠΉΠ΄ΠΈ Π² Π²ΠΈΠ΄Π΅ qr-ΠΊΠΎΠ΄Π°
ΠΈΠ»ΠΈ
// ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ qr-ΠΊΠΎΠ΄Π°
$rawImageContent = $api->getReceiptQrCodeImage('ΠΈΠ΄ ΡΠ΅ΠΊΠ°');
echo '<img src="data:image/png;base64,' . base64_encode($rawImageContent) . '"/>';
$receipt = new \khoroshun\Checkbox\Models\Receipts\SellReceipt(
'ΠΠ°ΡΡ ΠΡΠΏΠΊΠΈΠ½', // ΠΊΠ°ΡΡΠΈΡ
'ΠΡΠ΄Π΅Π» ΠΏΡΠΎΠ΄Π°ΠΆ', // ΠΎΡΠ΄Π΅Π»
new \khoroshun\Checkbox\Models\Receipts\Goods\Goods(
[
new \khoroshun\Checkbox\Models\Receipts\Goods\GoodItemModel( // ΡΠΎΠ²Π°Ρ 1
new \khoroshun\Checkbox\Models\Receipts\Goods\GoodModel(
'vm-123', // good_id
50 * 100, // 50 Π³ΡΠ½
'ΠΠΈΠΎΠ²Π°ΠΊ' // Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠΎΠ²Π°ΡΠ°
),
1 * 1000 // ΠΊΠΎΠ»-Π²ΠΎ ΡΠΎΠ²Π°ΡΠ° 1 ΡΡ
),
new \khoroshun\Checkbox\Models\Receipts\Goods\GoodItemModel( // ΡΠΎΠ²Π°Ρ 2
new \khoroshun\Checkbox\Models\Receipts\Goods\GoodModel(
'vm-124', // good_id
20 * 100, // 20 Π³ΡΠ½
'ΠΠΈΠΎΠ²Π°ΠΊ 2' // Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠΎΠ²Π°ΡΠ°
),
2 * 1000 // ΠΊΠΎΠ»-Π²ΠΎ ΡΠΎΠ²Π°ΡΠ° 2 ΡΡ
)
]
),
'admin@gmail.com', // ΠΊΠΎΠΌΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠ΅ΠΊ ΠΏΠΎ ΠΏΠΎΡΡΠ΅
new \khoroshun\Checkbox\Models\Receipts\Payments\Payments([
new \khoroshun\Checkbox\Models\Receipts\Payments\CardPaymentPayload( // Π±Π΅Π·Π½Π°Π»ΠΈΡΠ½Π°Ρ ΠΎΠΏΠ»Π°ΡΠ°
40 * 100 // 40 Π³ΡΠ½
),
new \khoroshun\Checkbox\Models\Receipts\Payments\CashPaymentPayload( // Π½Π°Π»ΠΈΡΠ½Π°Ρ ΠΎΠΏΠ»Π°ΡΠ°
50 * 100 // 50 Π³ΡΠ½
)
])
);
$api->createSellReceipt($receipt): \khoroshun\Checkbox\Models\Receipts\Receipt; // Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΠΎΠΏΠ»Π°ΡΡ
Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½Π°Ρ ΠΎΠΏΠ»Π°ΡΠ°:
$allTaxes = $api->getAllTaxes(); // ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ Π²ΡΠ΅ Π½Π°Π»ΠΎΠ³ΠΈ
$tax = $allTaxes->getTaxByLabel('ΠΠΊΡΠΈΠ·Π½ΠΈΠΉ Π·Π±ΡΡ'); // ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ Π½Π°Π»ΠΎΠ³ ΠΏΠΎ Π»Π΅ΠΉΠ±Π»
$goodTaxes = $allTaxes->getTaxesByLabel('ΠΠΠ'); // ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΠΌΠ°ΡΡΠΈΠ² Π½Π°Π»ΠΎΠ³ΠΎΠ² ΠΏΠΎ Π»Π΅ΠΉΠ±Π»
$taxCodes = [];
// ΠΏΠΎΠ΄Π³ΠΎΡΠ°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΌΠ°ΡΡΠΈΠ² ΠΊΠΎΠ΄ΠΎΠ² Π½Π°Π»ΠΎΠ³ΠΎΠ²
foreach ($goodTaxes->results as $goodTax) {
$taxCodes[] = $goodTax->code;
}
$receipt = new \khoroshun\Checkbox\Models\Receipts\SellReceipt(
'ΠΠ°ΡΡ ΠΡΠΏΠΊΠΈΠ½', // ΠΈΠΌΡ ΠΊΠ°ΡΡΠΈΡΠ°
'ΠΡΠ΄Π΅Π» ΠΏΡΠΎΠ΄Π°ΠΆ', // ΠΎΡΠ΄Π΅Π»
new \khoroshun\Checkbox\Models\Receipts\Goods\Goods( // ΡΠΎΠ²Π°ΡΡ
[
new \khoroshun\Checkbox\Models\Receipts\Goods\GoodItemModel(
new \khoroshun\Checkbox\Models\Receipts\Goods\GoodModel(
'vm-123', // good_id Π°ΠΉΠ΄ΠΈ ΡΠΎΠ²Π°ΡΠ°
5000, // 50 Π³ΡΠ½ ΡΠ΅Π½Π° 100 = 1 Π³ΡΠ½
'ΠΠΈΠΎΠ²Π°ΠΊ', // Π½Π°Π·Π²Π°Π½ΠΈΠ΅
'5Ρ47Π»Π΅78675Π΅3', // Π±Π°ΡΠΊΠΎΠ΄
'Ρ
ΠΈΠ΄Π΅Ρ', // Ρ
ΠΈΠ΄Π΅Ρ
'ΡΡΡΠ΅Ρ', // ΡΡΡΠ΅Ρ
'', // ktzed
$goodTaxes // Π½Π°Π»ΠΎΠ³ΠΈ ΡΠΎΠ²Π°ΡΠ°
),
1000, // ΠΊΠΎΠ»-Π²ΠΎ 1000 = 1 ΡΡ
new \khoroshun\Checkbox\Models\Receipts\Discounts\Discounts( // ΡΠΊΠΈΠ΄ΠΊΠΈ ΠΈΠ»ΠΈ Π½Π°Π΄Π±Π°Π²ΠΊΠΈ
[
new \khoroshun\Checkbox\Models\Receipts\Discounts\DiscountModel(
\khoroshun\Checkbox\Models\Receipts\Discounts\DiscountModel::TYPE_DISCOUNT, // ΡΠΊΠΈΠ΄ΠΊΠ° ΠΈΠ»ΠΈ Π½Π°Π΄Π±Π°Π²ΠΊΠ°
\khoroshun\Checkbox\Models\Receipts\Discounts\DiscountModel::MODE_VALUE, // ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΏΠΎ ΠΏΡΠΎΡΠ΅Π½ΡΡ
100, // 1 Π³ΡΠ½ ΡΡΠΌΠΌΠ° ΡΠΊΠΈΠ΄ΠΊΠΈ/Π½Π°Π΄Π±Π°Π²ΠΊΠΈ 100 = 1 Π³ΡΠ½
0, // ΡΡΠΌΠΌΠ° (Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Π΄Π°Π½Π½ΠΎΠΌ sdk)
$tax->code, // ΠΊΠΎΠ΄ Π½Π°Π»ΠΎΠ³Π° (ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΠ»ΠΈ Π²ΡΡΠ΅)
$taxCodes, // ΠΌΠ°ΡΡΠΈΠ² ΠΊΠΎΠ΄ΠΎΠ² Π½Π°Π»ΠΎΠ³Π° (ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΠ»ΠΈ Π²ΡΡΠ΅)
'one good discount' // Π½Π°Π·Π²Π°Π½ΠΈΠ΅
)
]
),
$allTaxes->getTaxesByLabel('ΠΠΊΡΠΈΠ·Π½ΠΈΠΉ Π·Π±ΡΡ'), // Π½Π°Π»ΠΎΠ³ΠΈ ΡΠΎΠ²Π°ΡΠ°
false, // Π²ΠΎΠ·Π²ΡΠ°Ρ ΡΠΎΠ²Π°ΡΠ° (false or true)
0, // ΡΡΠΌΠΌΠ° (Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Π΄Π°Π½Π½ΠΎΠΌ sdk)
'' // Π°ΠΉΠ΄ΠΈ ΡΠΎΠ²Π°ΡΠ° (ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ Π²Ρ Π·Π°Π³ΡΡΠΆΠ°Π»ΠΈ ΡΠΏΠΈΡΠΎΠΊ ΡΠΎΠ²Π°ΡΠ² (Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Π΄Π°Π½Π½ΠΎΠΌ sdk))
)
]
),
'admin@gmail.com', // ΠΊΠΎΠΌΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠ΅ΠΊ ΠΏΠΎ ΠΏΠΎΡΡΠ΅
new \khoroshun\Checkbox\Models\Receipts\Payments\Payments([ // ΠΎΠΏΠ»Π°ΡΡ
new \khoroshun\Checkbox\Models\Receipts\Payments\CardPaymentPayload( // Π±Π΅Π·Π½Π°Π»ΠΈΡΠ½Π°Ρ ΠΎΠΏΠ»Π°ΡΠ°
400, // ΡΡΠΌΠΌΠ° ΠΎΠΏΠ»Π°ΡΡ 400 = 4 Π³ΡΠ½
'beznalichka', // ΡΠ΅ΠΊΡΡ ΠΎΠΏΠ»Π°ΡΡ
0, // code - Π½Π΅ Π·Π½Π°Ρ Π΄Π»Ρ ΡΠ΅Π³ΠΎ (Π²ΠΈΠ΄ΠΈΠΌΠΎ ΠΏΠΈΠ½ ΠΊΠΎΠ΄ ΠΊΠ°ΡΡΡ)
'0000 0000 0000 0000' // Π½ΠΎΠΌΠ΅Ρ ΠΊΠ°ΡΡΡ
),
new \khoroshun\Checkbox\Models\Receipts\Payments\CashPaymentPayload( // Π½Π°Π»ΠΈΡΠ½Π°Ρ ΠΎΠΏΠ»Π°ΡΠ°
4300, // ΡΡΠΌΠΌΠ° ΠΎΠΏΠ»Π°ΡΡ 4300 = 43 Π³ΡΠ½
'nalichka' // ΡΠ΅ΠΊΡΡ ΠΎΠΏΠ»Π°ΡΡ
)
]),
new \khoroshun\Checkbox\Models\Receipts\Discounts\Discounts( // ΡΠΊΠΈΠ΄ΠΊΠΈ/Π½Π°Π΄Π±Π°Π²ΠΊΠΈ Π½Π° Π²Π΅ΡΡ ΡΠ΅ΠΊ
[
new \khoroshun\Checkbox\Models\Receipts\Discounts\DiscountModel(
\khoroshun\Checkbox\Models\Receipts\Discounts\DiscountModel::TYPE_DISCOUNT, // ΡΠΊΠΈΠ΄ΠΊΠ° ΠΈΠ»ΠΈ Π½Π°Π΄Π±Π°Π²ΠΊΠ°
\khoroshun\Checkbox\Models\Receipts\Discounts\DiscountModel::MODE_VALUE, // ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΏΠΎ ΠΏΡΠΎΡΠ΅Π½ΡΡ
200, // 2 Π³ΡΠ½ ΡΡΠΌΠΌΠ° ΡΠΊΠΈΠ΄ΠΊΠΈ/Π½Π°Π΄Π±Π°Π²ΠΊΠΈ 200 = 2 Π³ΡΠ½
0, // ΡΡΠΌΠΌΠ° (Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Π΄Π°Π½Π½ΠΎΠΌ sdk)
$tax->code, // ΠΊΠΎΠ΄ Π½Π°Π»ΠΎΠ³Π° (ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΠ»ΠΈ Π²ΡΡΠ΅)
$taxCodes, // ΠΌΠ°ΡΡΠΈΠ² ΠΊΠΎΠ΄ΠΎΠ² Π½Π°Π»ΠΎΠ³Π° (ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΠ»ΠΈ Π²ΡΡΠ΅)
'total discount' // Π½Π°Π·Π²Π°Π½ΠΈΠ΅
)
]
),
'check header', // ΡΠ΅ΠΊ Ρ
ΠΈΠ΄Π΅Ρ
'check footer', // ΡΠ΅ΠΊ ΡΡΡΠ΅Ρ
'45435h543twrege' // Π±Π°ΡΠΊΠΎΠ΄
);
$saleReceiptResult = $api->createSellReceipt($receipt): \khoroshun\Checkbox\Models\Receipts\Receipt; // Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΠΎΠΏΠ»Π°ΡΡ
Π΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ
$allTaxes = $api->getAllTaxes();
$tax = $allTaxes->getTaxByLabel('ΠΠΊΡΠΈΠ·Π½ΠΈΠΉ Π·Π±ΡΡ');
$goodTaxes = $allTaxes->getTaxesByLabel('ΠΠΠ');
$taxCodes = [];
foreach ($goodTaxes->results as $goodTax) {
$taxCodes[] = $goodTax->code;
}
$receipt = new \khoroshun\Checkbox\Models\Receipts\SellReceipt(
'ΠΠ°ΡΡ ΠΡΠΏΠΊΠΈΠ½',
'ΠΡΠ΄Π΅Π» ΠΏΡΠΎΠ΄Π°ΠΆ',
new \khoroshun\Checkbox\Models\Receipts\Goods\Goods(
[
new \khoroshun\Checkbox\Models\Receipts\Goods\GoodItemModel(
new \khoroshun\Checkbox\Models\Receipts\Goods\GoodModel(
'vm-123', // good_id
5000, // 50 Π³ΡΠ½
'ΠΠΈΠΎΠ²Π°ΠΊ',
'',
'',
'',
'',
$goodTaxes
),
1000,
new \khoroshun\Checkbox\Models\Receipts\Discounts\Discounts(
[
new \khoroshun\Checkbox\Models\Receipts\Discounts\DiscountModel(
\khoroshun\Checkbox\Models\Receipts\Discounts\DiscountModel::TYPE_DISCOUNT,
\khoroshun\Checkbox\Models\Receipts\Discounts\DiscountModel::MODE_VALUE,
100, // 1 Π³ΡΠ½
0,
$tax->code,
$taxCodes,
'ΠΌΠΎΡ ΡΠΊΠΈΠ΄ΠΊΠ°'
)
]
),
$allTaxes->getTaxesByLabel('ΠΠΊΡΠΈΠ·Π½ΠΈΠΉ Π·Π±ΡΡ'),
false,
0,
''
),
new \khoroshun\Checkbox\Models\Receipts\Goods\GoodItemModel(
new \khoroshun\Checkbox\Models\Receipts\Goods\GoodModel(
'vm-124', // good_id
2000, // 20 Π³ΡΠ½
'ΠΠΈΠΎΠ²Π°ΠΊ 2',
'',
'',
'',
'',
$goodTaxes
),
2000, // 2 ΡΡ
new \khoroshun\Checkbox\Models\Receipts\Discounts\Discounts(
[
new \khoroshun\Checkbox\Models\Receipts\Discounts\DiscountModel(
\khoroshun\Checkbox\Models\Receipts\Discounts\DiscountModel::TYPE_EXTRA_CHARGE,
\khoroshun\Checkbox\Models\Receipts\Discounts\DiscountModel::MODE_VALUE,
200, // 2 Π³ΡΠ½
0,
$tax->code,
$taxCodes,
'ΠΌΠΎΡ Π½Π°Π΄Π±Π°Π²ΠΊΠ°'
)
]
),
$allTaxes->getTaxesByLabel('ΠΠΊΡΠΈΠ·Π½ΠΈΠΉ Π·Π±ΡΡ'),
false,
0,
''
)
]
),
'admin@gmail.com',
new \khoroshun\Checkbox\Models\Receipts\Payments\Payments([
new \khoroshun\Checkbox\Models\Receipts\Payments\CardPaymentPayload(
4700
),
new \khoroshun\Checkbox\Models\Receipts\Payments\CashPaymentPayload(
4700
)
]),
new \khoroshun\Checkbox\Models\Receipts\Discounts\Discounts(
[
new \khoroshun\Checkbox\Models\Receipts\Discounts\DiscountModel(
\khoroshun\Checkbox\Models\Receipts\Discounts\DiscountModel::TYPE_EXTRA_CHARGE,
\khoroshun\Checkbox\Models\Receipts\Discounts\DiscountModel::MODE_VALUE,
200, // 2 Π³ΡΠ½
0,
$tax->code,
$taxCodes,
'ΠΎΠ±ΡΠ°Ρ Π½Π°Π΄Π±Π°Π²ΠΊΠ°'
)
]
)
);
$api->createSellReceipt($receipt): \khoroshun\Checkbox\Models\Receipts\Receipt;
$api->createServiceReceipt(
new \khoroshun\Checkbox\Models\Receipts\ServiceReceipt(
new \khoroshun\Checkbox\Models\Receipts\Payments\CashPaymentPayload(5100)
)
): \khoroshun\Checkbox\Models\Receipts\Receipt // ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠ΅ΠΊ ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠ³ΠΎ Π²Π½Π΅ΡΠ΅Π½ΠΈΡ Π΄Π΅Π½Π΅Π³ (Π½Π°Π»ΠΈΡΠΊΠΎΠΉ)
$api->createServiceReceipt(
new \khoroshun\Checkbox\Models\Receipts\ServiceReceipt(
new \khoroshun\Checkbox\Models\Receipts\Payments\CardPaymentPayload(1000)
)
): \khoroshun\Checkbox\Models\Receipts\Receipt // ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠ΅ΠΊ ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠ³ΠΎ Π²Π½Π΅ΡΠ΅Π½ΠΈΡ Π΄Π΅Π½Π΅Π³ (ΠΊΠ°ΡΡΠΎΠΉ)
$api->createServiceReceipt(
new \khoroshun\Checkbox\Models\Receipts\ServiceReceipt(
new new \khoroshun\Checkbox\Models\Receipts\Payments\CashPaymentPayload(-5100)
)
): \khoroshun\Checkbox\Models\Receipts\Receipt // ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠ΅ΠΊ ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ½Π΅ΡΠ΅Π½ΠΈΡ Π΄Π΅Π½Π΅Π³ (Π½Π°Π»ΠΈΡΠΊΠΎΠΉ) (Π·Π½Π°ΠΊ ΠΌΠΈΠ½ΡΡ)
$api->createServiceReceipt(
new \khoroshun\Checkbox\Models\Receipts\ServiceReceipt(
new new \khoroshun\Checkbox\Models\Receipts\Payments\CardPaymentPayload(-1000)
)
): \khoroshun\Checkbox\Models\Receipts\Receipt // ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠ΅ΠΊ ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ½Π΅ΡΠ΅Π½ΠΈΡ Π΄Π΅Π½Π΅Π³ (ΠΊΠ°ΡΡΠΎΠΉ) (Π·Π½Π°ΠΊ ΠΌΠΈΠ½ΡΡ)
Π²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΎΠ±ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡ Π² try cache
try {
// ΡΡΡ Π²ΡΠ΅ Π΄Π΅Π»Π°Π΅ΠΌ
} catch (\khoroshun\Checkbox\Errors\InvalidCredentials $err) {
var_dump('creds err', $err->getMessage());
} catch (\khoroshun\Checkbox\Errors\EmptyResponse $err) {
var_dump('empty response', $err->getMessage(), $err->getTraceAsString());
} catch (\khoroshun\Checkbox\Errors\Validation $err) {
var_dump('valid err', $err->getMessage());
var_dump('error detail', $err->getDetail());
} catch (\khoroshun\Checkbox\Errors\NoActiveShift $err) {
var_dump('no shift', $err->getMessage());
} catch (\khoroshun\Checkbox\Errors\AlreadyOpenedShift $err) {
var_dump('opened shift', $err->getMessage());
} catch (\Exception $err) {
var_dump('default err', $err->getMessage());
}
use khoroshun\Checkbox\CheckboxJsonApi;
use khoroshun\Checkbox\Config;
use khoroshun\Checkbox\Errors\InvalidCredentials;
use khoroshun\Checkbox\Errors\Validation;
use khoroshun\Checkbox\Errors\NoActiveShift;
use khoroshun\Checkbox\Errors\AlreadyOpenedShift;
use khoroshun\Checkbox\Errors\EmptyResponse;
use khoroshun\Checkbox\Models\CashRegisters\CashRegistersQueryParams;
use khoroshun\Checkbox\Models\Shifts\ShiftsQueryParams;
use khoroshun\Checkbox\Models\Receipts\ReceiptsQueryParams;
use khoroshun\Checkbox\Models\Receipts\Discounts\Discounts;
use khoroshun\Checkbox\Models\Receipts\Discounts\DiscountModel;
use khoroshun\Checkbox\Models\Receipts\SellReceipt;
use khoroshun\Checkbox\Models\Receipts\Payments\Payments;
use khoroshun\Checkbox\Models\Receipts\Payments\CardPaymentPayload;
use khoroshun\Checkbox\Models\Receipts\Payments\CashPaymentPayload;
use khoroshun\Checkbox\Models\Receipts\ServiceReceipt;
use khoroshun\Checkbox\Models\Reports\PeriodicalReportQueryParams;
use khoroshun\Checkbox\Models\Reports\ReportsQueryParams;
use khoroshun\Checkbox\Models\Transactions\TransactionsQueryParams;
use khoroshun\Checkbox\Models\Receipts\Goods\Goods;
use khoroshun\Checkbox\Models\Receipts\Goods\GoodItemModel;
use khoroshun\Checkbox\Models\Receipts\Goods\GoodModel;
For run all tests
make all
or connect to terminal
make exec
or use built in php server http://localhost:8080
# start server on 8080 port
make serve
# custom port 8081
make serve PORT=8081
Dafault php version is 8.0. Use PHP_VERSION= for using custom version.
make all PHP_VERSION=8.0
all commands
# security check
make security
# composer install
make install
# composer install with --no-dev
make install-no-dev
# check code style
make style
# run static analyze tools
make static-analyze
# run unit tests
make unit
# check coverage
make coverage
Without Docker
#validate composer json
composer check-composer
#static analyzes and codestyle
composer static
#run unit tests
composer unit-tests
#run all tests
composer all-tests