PHP code example of texhub / virtual-pos-andoz

1. Go to this page and download the library: Download texhub/virtual-pos-andoz library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

texhub / virtual-pos-andoz example snippets


use TexHub\VirtualPosAndoz\VirtualPos;
use TexHub\VirtualPosAndoz\Enums\TaxType;
use TexHub\VirtualPosAndoz\Requests\Product;
use TexHub\VirtualPosAndoz\Requests\ReceiptRequest;

$pos = VirtualPos::make('YOUR_OFD_TOKEN');

// 1) Open a shift
$pos->register()->openShift('Бульбашев Б.Б.');

// 2) Issue a cash income receipt
$receipt = $pos->receipts()->create(
    ReceiptRequest::income(TaxType::General)
        ->addProduct(Product::make('Шкаф', price: 10000, quantity: 1))
        ->cash(10000)
        ->consumer('[email protected]')
        ->externalId('7887788778')
);

echo $receipt->get('fdNumber');   // 3
echo $receipt->get('fpd');        // 0305354977

// 3) Close the shift
$pos->register()->closeShift('Бульбашев Б.Б.');

use TexHub\VirtualPosAndoz\Config;
use TexHub\VirtualPosAndoz\VirtualPos;

$pos = new VirtualPos(new Config(token: 'TOKEN', authPrefix: 'Bearer'));

use TexHub\VirtualPosAndoz\Enums\{TaxType, VatCode, Commodity};
use TexHub\VirtualPosAndoz\Requests\{Product, ReceiptRequest};

$receipt = ReceiptRequest::income(TaxType::General)
    ->addProduct(
        Product::make('Гречка', price: 2500, quantity: 2, commodity: Commodity::Goods, vatCode: VatCode::Standard)
            ->codeFromRaw('4880230146327')   // marking/barcode → Base64
    )
    ->addProduct(Product::make('Доставка', price: 1000, vatCode: VatCode::Reduced1))
    ->cash(6000)
    // ->nonCash(6000, bankRRN: '123456789012', bankCard: '123456****1234')
    ->consumer('992900123456')
    ->externalId('ORD-100032');

$pos->receipts()->create($receipt);

use TexHub\VirtualPosAndoz\Requests\CorrectionReceiptRequest;

$pos->receipts()->createCorrection(
    CorrectionReceiptRequest::income(TaxType::General)
        ->self(timestamp: 1731332618, orderNumber: '123Ж-Э1')  // or ->forced(...)
        ->addProduct(Product::make('Шкаф', 10000, 1))
        ->cash(10000)
);

$pos->documents()->last();
$pos->documents()->byNumber(9);
$pos->documents()->byExternalId('5665566556');

$pos->reports()->xReport();
$pos->reports()->fnReport();
$pos->reports()->shiftCashReport();
$pos->reports()->queueReport();

$pos->cash()->add(10000);
$pos->cash()->remove(5000);

$pos->counters()->create(101, 'Отмененные операции');
$pos->counters()->list();
$pos->counters()->increase(101, 3);
$pos->counters()->decrease(101, 1);
$pos->counters()->reset(101);
$pos->counters()->delete(101);

$status = $pos->register()->status();
$status->get('shiftStatus');         // bool
$status->get('exchangeBalance');     // change balance
$status->get('registrationInformation.orgName');

use TexHub\VirtualPosAndoz\Exceptions\ApiException;
use TexHub\VirtualPosAndoz\Enums\ResultCode;

try {
    $pos->receipts()->create($receipt);
} catch (ApiException $e) {
    $e->rc;                       // 'SHIFT_MUST_BE_OPENED'
    $e->code();                   // ResultCode::ShiftMustBeOpened | null
    $e->getMessage();             // 'Смена должна быть открыта.'
    if ($e->is(ResultCode::ShiftMustBeOpened)) {
        $pos->register()->openShift('Кассир');
    }
}

use TexHub\VirtualPosAndoz\Laravel\VirtualPos;
use TexHub\VirtualPosAndoz\Requests\{Product, ReceiptRequest};

VirtualPos::register()->status();

VirtualPos::receipts()->create(
    ReceiptRequest::income()->addProduct(Product::make('Шкаф', 10000, 1))->cash(10000)
);

public function __construct(private \TexHub\VirtualPosAndoz\VirtualPos $pos) {}

use TexHub\VirtualPosAndoz\Tests\Support\FakeTransport;
use TexHub\VirtualPosAndoz\{Config, VirtualPos};

$t = (new FakeTransport())->push(['fdNumber' => 3, 'fpd' => '0305354977']);
$pos = new VirtualPos(new Config(token: 'TKN'), $t);