Pohoda XML communication library for PHP
genericapt install php-riesenia-pohodaPHP library for generating and parsing Pohoda XML documents used for communication with the Stormware Pohoda accounting software.
Provides classes for creating invoices, orders, stock items, addressbook entries, bank records, contracts, and other Pohoda agenda types.
Pridaním do composer.json:
{
"require": {
"riesenia/pohoda": "~1.0"
}
}
Príkazom:
composer require 'riesenia/pohoda:~1.0'
Príklady pre import jednotlivých typov viď. spec folder.
use Riesenia\Pohoda;
$pohoda = new Pohoda('ICO');
// create file
$pohoda->open($filename, 'i_obj1', 'Import orders');
// create order
$order = $pohoda->createOrder([
'numberOrder' => $order_number,
'isReserved' => true,
'date' => $created,
'text' => '...',
'partnerIdentity' => [
'address' => [
'name' => $billing_name,
'street' => $billing_street,
'city' => $billing_city,
'zip' => $billing_zip,
'email' => $email,
'phone' => $phone
],
'shipToAddress' => [
'name' => $shipping_name,
'street' => $shipping_street,
'city' => $shipping_city,
'zip' => $shipping_zip,
'email' => $email,
'phone' => $phone
]
]
]);
// add items
foreach ($items as $item) {
$order->addItem([
'code' => $item->code,
'text' => $item->text,
'quantity' => $item->quantity,
'payVAT' => false,
'rateVAT' => $item->rate,
'homeCurrency' => [
'unitPrice' => $item->unit_price
],
'stockItem' => [
'stockItem' => [
'id' => $item->pohoda_id
]
]
]);
}
// add summary
$order->addSummary([
'roundingDocument' => 'none'
]);
// add order to import (identified by $order_number)
$pohoda->addItem($order_number, $order);
// finish import file
$pohoda->close();
Vytvorenie príkazu na export sa realizuje prostredníctvom vytvorenia ListRequest.
use Riesenia\Pohoda;
$pohoda = new Pohoda('ICO');
// create request for export
$pohoda->open($filename, 'e_zas1', 'Export stock');
$request = $pohoda->createListRequest([
'type' => 'Stock'
]);
// optional filter
$request->addUserFilterName('MyFilter');
$pohoda->addItem('Export 001', $request);
$pohoda->close();
Samotné spracovanie dát je riešené jednoducho - volanie next vracia SimpleXMLElement s danou entitou.
// load file
$pohoda->loadStock($filename);
while ($stock = $pohoda->next()) {
// access header
$header = $stock->children('stk', true)->stockHeader;
// ...
}
Pri mazaní je potrebné vytvoriť agendu s prázdnymi dátami a nastaviť jej delete actionType.
use Riesenia\Pohoda;
$pohoda = new Pohoda('ICO');
// create request for deletion
$pohoda->open($filename, 'd_zas1', 'Delete stock');
$stock = $pohoda->createStock([]);
$stock->addActionType('delete', [
'code' => $code
]);
$pohoda->addItem($code, $stock);
$pohoda->close();
Pomocou rozhrania ValueTransformer môžeme implementovať transformátor, ktorý zmení všetky údaje. Príklad pre úpravu všetkých hodnôt na veľké písmena:
use Riesenia\Pohoda;
class Capitalizer implements \Riesenia\Pohoda\ValueTransformer\ValueTransformer
{
public function transform(string $value): string
{
return \strtoupper($value);
}
}
// Register the capitalizer to be used to capitalize values
Pohoda::$transformers[] = new Capitalizer();
$pohoda = new Pohoda('ICO');
...
This package may not be indexed in our database yet. Please try again later or check the package repository directly.