Completed
Push — master ( 923447...d5d70a )
by Vítězslav
03:36
created

FakturaVydana::odpoctyZaloh()   B

Complexity

Conditions 6
Paths 32

Size

Total Lines 22
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 42

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 6
eloc 14
c 1
b 0
f 1
nc 32
nop 2
dl 0
loc 22
ccs 0
cts 0
cp 0
crap 42
rs 8.6737
1
<?php
2
/**
3
 * FlexiPeeHP - Objekt vydané faktury.
4
 *
5
 * @author     Vítězslav Dvořák <[email protected]>
6
 * @copyright  (C) 2015,2016 Spoje.Net
7
 */
8
9
namespace FlexiPeeHP;
10
11
/**
12
 * Faktura vydaná
13
 *
14
 * @link https://demo.flexibee.eu/c/demo/faktura-vydana/properties položky evidence
15
 */
16
class FakturaVydana extends FlexiBeeRW
17
{
18
    /**
19
     * Evidence užitá objektem.
20
     *
21
     * @var string
22
     */
23
    public $evidence = 'faktura-vydana';
24
25
    /**
26
     * Provede spárování platby s dokladem
27
     *
28
     * @link https://demo.flexibee.eu/devdoc/parovani-plateb Párování plateb
29
     * @param $doklad Banka|PokladniPohyb|InterniDoklad S jakým dokladem spárovat ?
30
     * @param $zbytek string ne|zauctovat|ignorovat|castecnaUhrada|castecnaUhradaNeboZauctovat|castecnaUhradaNeboIgnorovat
31
     */
32
    public function sparujPlatbu($doklad, $zbytek = 'ignorovat')
33
    {
34
        $sparovani                       = ['uhrazovanaFak' => $this];
35
        $sparovani['uhrazovanaFak@type'] = $this->evidence;
36
        $sparovani['zbytek']             = $zbytek;
37
        $doklad->setDataValue('sparovani', $sparovani);
38
        return $doklad->insertToFlexiBee();
39
    }
40
41
    /**
42
     *  Hotovostní platba faktury.
43
     *
44
     * @link https://demo.flexibee.eu/devdoc/hotovostni-uhrada/ Hotovostní úhrada
45
     * @link https://demo.flexibee.eu/c/demo/pokladna Pokladny
46
     * @link https://demo.flexibee.eu/c/demo/typ-pokladni-pohyb Typy dokladů
47
     * @param float $value částka k úhradě
48
     * @param array $uhrada pole nepoviných vlastností úhrady s těmito možnými položkami:
49
     *        string|Pokladna  'pokladna' identifikátor pokladny
50
     *        string  'typDokl' kod typu pokladniho dokladu
51
     *        boolean 'kurzKDatuUhrady'
52
     *        string  'uhrazujiciDokl' Pokud uvedeno není, vždy se vytvoří nový
53
     *                                pokladní doklad.
54
     *        string  'rada' dokladová řada pro vytvářený pokladní doklad.
55
     *                      Např.:code:POKLADNA+
56
     *        string  'datumUhrady' sql formát. Výchozí: dnes
57
     * @return array výsledek pokusu o provedení úhrady
58
     */
59
    public function hotovostniUhrada($value, $uhrada = [])
60
    {
61
        if (!isset($uhrada['pokladna'])) {
62
            $uhrada['pokladna'] = 'code:POKLADNA KČ';
63
        }
64
65
        if (!isset($uhrada['typDokl'])) {
66
            $uhrada['typDokl'] = 'code:STANDARD';
67
        }
68
69
        if (!isset($uhrada['kurzKDatuUhrady'])) {
70
            $uhrada['kurzKDatuUhrady'] = false;
71
        }
72
73
        if (!isset($uhrada['datumUhrady'])) {
74
            $uhrada['datumUhrady'] = date('Y-m-d');
75
        }
76
77
        $uhrada['castka'] = $value;
78
79
        $this->setDataValue('hotovostni-uhrada', $uhrada);
80
        return $this->insertToFlexiBee();
81
    }
82
83
    /**
84
     * Odpočet zálohy
85
     * 
86
     * @link https://demo.flexibee.eu/devdoc/odpocet-zaloh Odpočet záloh a ZDD
87
     * @param FakturaVydana $invoice zálohová faktura
88
     * @param array $odpocet Vlastnosti odpočtu
89
     * @return array
90
     */
91
    public function odpoctyZaloh($invoice, $odpocet = [])
92
    {
93
        if (!isset($odpocet['castkaZaklMen'])) {
94
            $odpocet['castkaZaklMen'] = $invoice->getDataValue('sumZklZakl');
95
        }
96
        if (!isset($odpocet['castkaSnizMen'])) {
97
            $odpocet['castkaSnizMen'] = $invoice->getDataValue('sumZklSniz');
98
        }
99
        if (!isset($odpocet['castkaSniz2Men'])) {
100
            $odpocet['castkaSniz2Men'] = $invoice->getDataValue('sumZklSniz2');
101
        }
102
        if (!isset($odpocet['castkaOsvMen'])) {
103
            $odpocet['castkaOsvMen'] = $invoice->getDataValue('sumOsv');
104
        }
105
        if (!isset($odpocet['id'])) {
106
            $odpocet['id'] = 'ext:odpocet1';
107
        }
108
        $odpocet['doklad'] = $invoice;
109
110
        $this->setDataValue('odpocty-zaloh', ['odpocet' => $odpocet]);
111
        return $this->insertToFlexiBee();
112
    }
113
}