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 |