Code

< 40 %
40-60 %
> 60 %
1
<?php
2
3
namespace CfdiUtils;
4
5
use CfdiUtils\CadenaOrigen\XsltBuilderInterface;
6
use CfdiUtils\CadenaOrigen\XsltBuilderPropertyInterface;
7
use CfdiUtils\Certificado\Certificado;
8
use CfdiUtils\Certificado\CertificadoPropertyInterface;
9
use CfdiUtils\Elements\Cfdi40\Comprobante;
10
use CfdiUtils\Validate\Asserts;
11
use CfdiUtils\Validate\MultiValidatorFactory;
12
use CfdiUtils\XmlResolver\XmlResolver;
13
use CfdiUtils\XmlResolver\XmlResolverPropertyInterface;
14
15
class CfdiCreator40 implements
16
    CertificadoPropertyInterface,
17
    XmlResolverPropertyInterface,
18
    XsltBuilderPropertyInterface
19
{
20
    use CfdiCreatorTrait;
21
22
    /** @var Comprobante */
23
    private $comprobante;
24
25
    /**
26
     * CfdiCreator40 constructor.
27
     *
28
     * @param array $comprobanteAttributes
29
     * @param Certificado|null $certificado
30
     * @param XmlResolver|null $xmlResolver
31
     * @param XsltBuilderInterface|null $xsltBuilder
32
     */
33 6
    public function __construct(
34
        array $comprobanteAttributes = [],
35
        Certificado $certificado = null,
36
        XmlResolver $xmlResolver = null,
37
        XsltBuilderInterface $xsltBuilder = null
38
    ) {
39 6
        $this->comprobante = new Comprobante();
40 6
        $this->cfdiCreatorConstructor($comprobanteAttributes, $certificado, $xmlResolver, $xsltBuilder);
41
    }
42
43 4
    public function comprobante(): Comprobante
44
    {
45 4
        return $this->comprobante;
46
    }
47
48 2
    public function buildCadenaDeOrigen(): string
49
    {
50 2
        $xsltLocation = $this->getXmlResolver()->resolveCadenaOrigenLocation('4.0');
51 2
        return $this->buildCadenaDeOrigenUsingXsltLocation($xsltLocation);
52
    }
53
54 2
    public function validate(): Asserts
55
    {
56 2
        $validator = (new MultiValidatorFactory())->newCreated40();
57 2
        return $this->validateUsingValidator($validator);
58
    }
59
}
60