Overview

Namespaces

  • FlexiPeeHP
  • PHP

Classes

  • DateTime
  • FlexiPeeHP\Actions
  • FlexiPeeHP\Adresar
  • FlexiPeeHP\Banka
  • FlexiPeeHP\Cenik
  • FlexiPeeHP\Changes
  • FlexiPeeHP\Company
  • FlexiPeeHP\DodavatelskaSmlouva
  • FlexiPeeHP\EvidenceList
  • FlexiPeeHP\FakturaPrijata
  • FlexiPeeHP\FakturaVydana
  • FlexiPeeHP\FakturaVydanaPolozka
  • FlexiPeeHP\FlexiBeeRO
  • FlexiPeeHP\FlexiBeeRW
  • FlexiPeeHP\Formats
  • FlexiPeeHP\Hooks
  • FlexiPeeHP\InterniDoklad
  • FlexiPeeHP\Kontakt
  • FlexiPeeHP\Nastaveni
  • FlexiPeeHP\Pokladna
  • FlexiPeeHP\PokladniPohyb
  • FlexiPeeHP\Priloha
  • FlexiPeeHP\RadaPokladniPohyb
  • FlexiPeeHP\Relations
  • FlexiPeeHP\SkladovaKarta
  • FlexiPeeHP\SkladovyPohyb
  • FlexiPeeHP\SkladovyPohybPolozka
  • FlexiPeeHP\SkupinaFirem
  • FlexiPeeHP\Smlouva
  • FlexiPeeHP\Status
  • FlexiPeeHP\Stitek
  • FlexiPeeHP\Strom
  • FlexiPeeHP\StromCenik
  • FlexiPeeHP\UcetniObdobi
  • FlexiPeeHP\VyrobniCislo
  • FlexiPeeHP\Zavazek
  • FlexiPeeHP\Zurnal

Interfaces

  • DateTimeInterface
  • Throwable

Traits

  • FlexiPeeHP\Firma
  • FlexiPeeHP\Stitky
  • FlexiPeeHP\Sum

Exceptions

  • Exception
  • Overview
  • Namespace
  • Class
  • Tree
  1:   2:   3:   4:   5:   6:   7:   8:   9:  10:  11:  12:  13:  14:  15:  16:  17:  18:  19:  20:  21:  22:  23:  24:  25:  26:  27:  28:  29:  30:  31:  32:  33:  34:  35:  36:  37:  38:  39:  40:  41:  42:  43:  44:  45:  46:  47:  48:  49:  50:  51:  52:  53:  54:  55:  56:  57:  58:  59:  60:  61:  62:  63:  64:  65:  66:  67:  68:  69:  70:  71:  72:  73:  74:  75:  76:  77:  78:  79:  80:  81:  82:  83:  84:  85:  86:  87:  88:  89:  90:  91:  92:  93:  94:  95:  96:  97:  98:  99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 
<?php
/**
 * FlexiPeeHP - Objekt štítku.
 *
 * @author     Vítězslav Dvořák <vitex@arachne.cz>
 * @copyright  (C) 2015-2017 Spoje.Net
 */

namespace FlexiPeeHP;

/**
 * Štítek
 *
 * @link https://demo.flexibee.eu/c/demo/stitek/properties Vlastnosti evidence
 */
class Stitek extends FlexiBeeRW
{
    /**
     * Evidence Path for vsb supported by label
     *
     * @var array
     */
    public static $vsbToEvidencePath = [
        'vsbAdr' => 'adresar', // Adresář
        'vsbBan' => 'banka', // Banka
//      'vsbCis' => 'ciselnik', // Číselníky
        'vsbFap' => 'faktura-prijata', // Přijaté faktury
        'vsbFav' => 'faktura-vydana', // Vydané faktury
//      'vsbInt' => '' // Interní doklady
        'vsbKatalog' => 'cenik', // Adresář
//      'vsbMaj' => '', // Majetek
//      'vsbMzd' => 'mzda', // Mzdy
        'vsbNap' => 'nabidka-prijata', // Nabídky přijaté
        'vsbNav' => 'nabidka-vydana', // Nabídky vydané
        'vsbObp' => 'objednavka-prijata', // Objednávky přijaté
        'vsbObv' => 'objednavka-vydana', // Objednávky vydané
        'vsbPhl' => 'pohledavka', // Pohledávky
        'vsbPok' => 'pokladna', // Pokladna
        'vsbPpp' => 'poptavka-prijata', // Poptávky přijaté
        'vsbPpv' => 'poptavka-vydana', // Poptávky vydané
        'vsbSkl' => 'sklad', // Sklad
        'vsbZav' => 'zavazek', // Závazky
    ];

    /**
     * Evidence užitá objektem.
     *
     * @var string
     */
    public $evidence = 'stitek';

    /**
     * Obtain labels for current record
     *
     * @deprecated since version 1.21
     * 
     * @param FlexiBeeRO $object data source
     * @return array labels
     */
    public static function getLabels($object)
    {
        $labels    = null;
        $labelsRaw = $object->getDataValue('stitky');

        if (strlen($labelsRaw)) {
            $labels = is_array($labelsRaw) ? $labelsRaw : self::listToArray($labelsRaw);
        }
        return $labels;
    }

    /**
     * Convert coma-separated list to array
     *
     * @param string $listRaw
     * 
     * @return array
     */
    public static function listToArray($listRaw)
    {
        if (is_array($listRaw)) {
            $list = array_combine(array_values($listRaw), array_values($listRaw));
        } else {
            if (strstr($listRaw, ',')) {
                $list = array_map('trim', explode(',', $listRaw));
            } else {
                $list = [$listRaw];
            }
            $list = array_combine($list, $list);
        }
        return empty($listRaw) ? [] : $list;
    }

    /**
     * Obtain list of availble labels for given object
     *
     * @param FlexiBeeRO $object
     * 
     * @return array
     */
    public static function getAvailbleLabels($object)
    {
        $labels         = [];
        $evidenceBackup = $object->getEvidence();
        $object->setEvidence('stitek');
        $pathToVsb      = array_flip(self::$vsbToEvidencePath);

        if (array_key_exists($evidenceBackup, $pathToVsb)) {
            $labelsRaw = $object->getColumnsFromFlexiBee(['kod', 'nazev'],
                [$pathToVsb[$evidenceBackup] => true], 'nazev');
            if (count($labelsRaw)) {
                foreach ($labelsRaw as $labelInfo) {
                    $labels[$labelInfo['kod']] = $labelInfo['nazev'];
                }
            }
        }

        $object->setEvidence($evidenceBackup);
        return $labels;
    }

    /**
     * Set Label for Current Object record
     *
     * @deprecated since version 1.21
     * 
     * @param string     $label
     * @param FlexiBeeRW $object
     *
     * @return boolean   success result ?
     */
    public static function setLabel($label, $object)
    {
        return $object->insertToFlexiBee(['id' => $object->getMyKey(), 'stitky' => $label]);
    }

    /**
     * UnSet Label for Current Object record
     *
     * @deprecated since version 1.21
     * 
     * @param string     $label
     * @param FlexiBeeRW $object
     *
     * @return boolean   success result ?
     */
    public static function unsetLabel($label, $object)
    {
        $result = true;
        $labels = self::getLabels($object);
        if (array_key_exists($label, $labels)) {
            unset($labels[$label]);
            $object->insertToFlexiBee(['id' => $object->getMyKey(), 'stitky@removeAll' => 'true',
                'stitky' => $labels]);
            $result = ($object->lastResponseCode == 201);
        }
        return $result;
    }

    /**
     * Create New Label for given evidencies
     * 
     * @param string $name       Label Name
     * @param array  $evidences  Evidence code list ex: ['faktura-vydana','faktura-prijata']
     * @param array  $options    Additional Label properties ex: ['kod'=>'EXAMPLE','skupVybKlic'=>'SKUPINA_STITKU'] 
     * 
     * @return boolean success
     */
    public function createNew($name, $evidences, $options = [])
    {
        $this->setData($options, true);
        $evidence2code = array_flip(self::$vsbToEvidencePath);
        foreach ($evidences as $evidence) {
            if (array_key_exists($evidence, $evidence2code)) {
                $this->setDataValue($evidence2code[$evidence], true);
            }
        }

        if (!array_key_exists('kod', $options)) {
            $this->setDataValue('kod', self::code($name));
        }
        $this->setDataValue('nazev', $name);
        return $this->sync();
    }
}
FlexiPeeHP API documentation generated by ApiGen