alex-kalanis/pohoda 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

alex-kalanis/pohoda

最新稳定版本:v10.0.0

Composer 安装命令:

composer require alex-kalanis/pohoda

包简介

Pohoda XML communication

README 文档

README

Build Status Scrutinizer Code Quality Latest Stable Version Minimum PHP Version Total Downloads Software License Code Coverage

Library for manipulation with data, which came as XML from Pohoda mServer.

Pohoda is an accounting software for the Czech Republic, Slovakia and probably few other countries.

What is different:

Usage of phpunit, extended tests, phpstan 1.12, deeper type checking

Installation

Add to composer.json:

composer.phar require alex-kalanis/pohoda

Example of order imports

Examples of importing each type - more in spec folder.

use kalanis\Pohoda;

$pohoda = new Pohoda('ICO');

// create file
$pohoda->open($filename, 'i_obj1', 'Import orders');

$partnerIdentityAddress = new Pohoda\Type\Dtos\AddressTypeDto();
$partnerIdentityAddress->name = $billing_name;
$partnerIdentityAddress->street => $billing_street;
$partnerIdentityAddress->city => $billing_city;
$partnerIdentityAddress->zip => $billing_zip;
$partnerIdentityAddress->email => $email;
$partnerIdentityAddress->phone => $phone;

$partnerShipAddress = new Pohoda\Type\Dtos\ShipToAddressDto();
$partnerShipAddress->name = $shipping_name;
$partnerShipAddress->street => $shipping_street;
$partnerShipAddress->city => $shipping_city;
$partnerShipAddress->zip => $shipping_zip;
$partnerShipAddress->email => $email;
$partnerShipAddress->phone => $phone;

$partnerIdentity = new Pohoda\Type\Dtos\AddressDto();
$partnerIdentity->address = $partnerIdentityAddress;
$partnerIdentity->shipToAddress = $partnerShipAddress;

$orderHeaderDto = new Pohoda\Order\HeaderDto();
$orderHeaderDto->numberOrder = $order_number;
$orderHeaderDto->isReserved = true;
$orderHeaderDto->date = $created;
$orderHeaderDto->text = '...';
$orderHeaderDto->partnerIdentity = $partnerIdentity;

$orderDto = new Pohoda\Order\OrderDto();
$orderDto->header = $orderHeaderDto;

// create order
$order = $pohoda->createOrder($orderDto);

// add items
foreach ($items as $item) {

    $homeCurrency = new Pohoda\Type\Dtos\CurrencyItemDto();
    $homeCurrency->unitPrice = $item->unit_price;
    
    $stockItem = new Pohoda\Type\Dtos\StockItemDto();
    $stockItem->stockItem = [
        'id' => $item->pohoda_id
    ];

    $itemDto = new Pohoda\Order\ItemDto();
    $itemDto->code => $item->code;
    $itemDto->text => $item->text;
    $itemDto->quantity => $item->quantity;
    $itemDto->payVAT => false;
    $itemDto->rateVAT => $item->rate;
    $itemDto->homeCurrency = $homeCurrency;
    $itemDto->stockItem = $stockItem;

    $order->addItem($itemDto);
}

// add summary
$summaryDto = new Riesenia\Pohoda\Order\SummaryDto();
$summaryDto->roundingDocument = 'none';
$order->addSummary($summaryDto);

// add order to import (identified by $order_number)
$pohoda->addItem($order_number, $order);

// finish import file
$pohoda->close();

Exporting stored goods

The creation of request to export goods is realized by creating ListRequest.

use kalanis\Pohoda;

$pohoda = new Pohoda('ICO');

// create request for export
$pohoda->open($filename, 'e_zas1', 'Export stock');

$requestDto = new Pohoda\ListRequest\ListRequestDto();
$requestDto->type = 'Stock';

$request = $pohoda->createListRequest($requestDto);

// optional filter
$request->addUserFilterName(
    Pohoda\ListRequest\UserFilterNameDto::init('MyFilter')
);
$pohoda->addItem('Export 001', $request);

$pohoda->close();

The rest of the processing itself is simple - just call next and got SimpleXMLElement with entity.

// load file
$pohoda->loadStock($filename);

while ($stock = $pohoda->next()) {
    // access header
    $header = $stock->children('stk', true)->stockHeader;

    // ...
}

Example of deleting stock

When you delete stock you need to create an agenda with empty data and set them delete actionType.

use kalanis\Pohoda;

$pohoda = new Pohoda('ICO');

// create request for deletion
$pohoda->open($filename, 'd_zas1', 'Delete stock');

$stock = $pohoda->createStock(null);

$stock->addActionType('delete', [
    'code' => $code
]);

$pohoda->addItem($code, $stock);

$pohoda->close();

Using ValueTransformer for value update

With interface ValueTransformer you can implement the transformation, which changes all the values. Example for change all values to uppercase:

use kalanis\Pohoda;

class Capitalizer implements \Riesenia\Pohoda\ValueTransformer\ValueTransformerInterface
{
    public function transform(string $value): string
    {
        return \strtoupper($value);
    }
}

$pohoda = new Pohoda('ICO');

// Register the capitalizer to be used to capitalize values
$pohoda->getTransformerListing()->addTransformer(new Capitalizer());

...

Sources

统计信息

  • 总下载量: 12
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 4
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2024-12-09