Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Recyklační příspěvky přímo ve faktuře #42

Open
haltuf opened this issue Nov 15, 2023 · 4 comments
Open

Recyklační příspěvky přímo ve faktuře #42

haltuf opened this issue Nov 15, 2023 · 4 comments

Comments

@haltuf
Copy link

haltuf commented Nov 15, 2023

RP lze zadat i přímo do faktury:

Agendu Recyklační příspěvky můžete používat také ve variantách programu POHODA bez skladové evidence; najdete ji v nabídce Fakturace. Zobrazení sloupců pro přiřazení příspěvků textovým položkám si nastavíte v agendě Globální nastavení v sekci Doklady.

XML requestu pak vypadá takto:

	<inv:recyclingContrib>
		<typ:recyclingContribText>Recyklační příspěvek bez DPH:</typ:recyclingContribText>
		<typ:recyclingContribAmount>1.1</typ:recyclingContribAmount>
		<typ:recyclingContribUnit>kg</typ:recyclingContribUnit>
		<typ:coefficientOfRecyclingContrib>0.056</typ:coefficientOfRecyclingContrib>
	</inv:recyclingContrib>
@haltuf
Copy link
Author

haltuf commented Nov 15, 2023

Vyřešil jsem takto:

1/ vytvořením nového Riesenia\Pohoda\Invoice\RecyclingContrib (defacto kopie ze Stock):

<?php declare(strict_types=1);

namespace Riesenia\Pohoda\Invoice;

use Riesenia\Pohoda\Agenda;
use Riesenia\Pohoda\Common\OptionsResolver;

class RecyclingContrib extends Agenda
{
	/** @var string[] */
	protected $_refElements = ['recyclingContribType'];

	/** @var string[] */
	protected $_elements = ['recyclingContribType', 'recyclingContribText', 'recyclingContribAmount', 'recyclingContribUnit', 'coefficientOfRecyclingContrib'];

	/**
	 * {@inheritdoc}
	 */
	public function getXML(): \SimpleXMLElement
	{
		$xml = $this->_createXML()->addChild('inv:recyclingContrib', '', $this->_namespace('inv'));

		$this->_addElements($xml, $this->_elements, 'typ');

		return $xml;
	}

	/**
	 * {@inheritdoc}
	 */
	protected function _configureOptions(OptionsResolver $resolver)
	{
		// available options
		$resolver->setDefined($this->_elements);

		$resolver->setNormalizer('recyclingContribType', $resolver->getNormalizer('string32'));
		$resolver->setNormalizer('recyclingContribText', $resolver->getNormalizer('string90'));
		$resolver->setNormalizer('recyclingContribAmount', $resolver->getNormalizer('float'));
		$resolver->setNormalizer('recyclingContribUnit', $resolver->getNormalizer('string2'));
		$resolver->setNormalizer('coefficientOfRecyclingContrib', $resolver->getNormalizer('float'));
	}
}

2/ úpravou Riesenia\Pohoda\Invoice\Item

protected $_elements = ['text', 'quantity', 'unit', 'coefficient', 'payVAT', 'rateVAT', 'percentVAT', 'discountPercentage', 'homeCurrency', 'foreignCurrency', 'typeServiceMOSS', 'note', 'code', 'guarantee', 'guaranteeType', 'stockItem', 'accounting', 'classificationVAT', 'classificationKVDPH', 'centre', 'activity', 'contract', 'expirationDate', 'PDP', 'recyclingContrib'];

a

public function __construct(array $data, string $ico, bool $resolveOptions = true)
	{
		if (isset($data['recyclingContrib'])) {
			$data['recyclingContrib'] = new RecyclingContrib($data['recyclingContrib'], $ico, $resolveOptions);
		}

		parent::__construct($data, $ico, $resolveOptions);
	}

Omlouvám se, že neposílám rovnou PR, ale řešil jsem velmi narychlo.

@segy
Copy link
Member

segy commented Jan 17, 2024

zdravim. budete mat priestor na toto spravit pr?

@haltuf
Copy link
Author

haltuf commented Jan 17, 2024

@segy zkusím v pátek.

@segy
Copy link
Member

segy commented Apr 23, 2024

kedykolvek :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants