Error en validación de comprobante
ulisescarreonalvarez opened this issue · comments
Qué tal!
He tenido un problema al querer validar el comprobante en la creación con el error:
TypeError: Argument 1 passed to Eclipxe\XmlSchemaValidator\SchemaValidator::__construct() must be an instance of DOMDocument, string given, called in /Sites/repos/Core/Validate/Cfdi33/Xml/XmlFollowSchema.php on line 51 in file /Sites/repos/vendor/eclipxe/xmlschemavalidator/src/SchemaValidator.php on line 35
Al parecer XmlFollowSchema.php espera en esta sección:
// create the schema validator object
$schemaValidator = new SchemaValidator($content);
El content al imprimirlo tiene un objecto de tipo Comprobante:
$asserts = new Asserts();
$validator->validate($this->comprobante(), $asserts);
dd($validator);
return $asserts;
Y cuando llega al SchemaValidator:
// obtain content
if ('' === $content = $this->getXmlString()) {
$content = XmlNodeUtils::nodeToXmlString($comprobante);
}
dd($content);
// create the schema validator object
$schemaValidator = new SchemaValidator($content);
"""
<?xml version="1.0" encoding="UTF-8"?>
<cfdi:Comprobante xmlns:cfdi="http://www.sat.gob.mx/cfd/3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv33.xsd" Version="3.3" Serie="A" Folio="1" Fecha="2020-12-10T11:06:28" FormaPago="01" Moneda="MXN" TipoDeComprobante="I" LugarExpedicion="52000" NoCertificado="30001000000400002335" Certificado="MIIFijCCA3KgAwIBAgIUMzAwMDEwMDAwMDA0MDAwMDIzMzUwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWRpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMTkwNTI5MTk1MDAxWhcNMjMwNTI5MTk1MDAxWjCBsTEdMBsGA1UEAxMUWE9DSElMVCBDQVNBUyBDSEFWRVoxHTAbBgNVBCkTFFhPQ0hJTFQgQ0FTQVMgQ0hBVkVaMR0wGwYDVQQKExRYT0NISUxUIENBU0FTIENIQVZFWjEWMBQGA1UELRMNQ0FDWDc2MDUxMDFQODEbMBkGA1UEBRMSQ0FDWDc2MDUxME1HVFNIQzA0MR0wGwYDVQQLExRYT0NISUxUIENBU0FTIENIQVZFWjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKvYaTyUuvtUIwymg88xS3Ri7W2J758lusEgwUaxdyIyxLQK2736yrK6RotjDu7pfbzqD5CyJ6gkT70x29QNe5MHUgcNPnARoYK2+0a0kWjpweNqjb0pCOMevUCzblF72c7MkErbW5qolIRIsI4UFSZOlLDI9O9lKm0Tk85Ab0siaqUefGl9lOOkjPT7Pr/CkHk4jxZJOzY2cWVey00vgFh/t9xxbF6Rvi738dfZ9R9h2TVEpaRRYb+m4rpTMos6HEfmhuKSsNe2/M8NDxC4zkcwdC5WS9NhNd4kUQ+7TFLmIo14tOXXSBZVVsg49/L+lq/eh44K1Ze3iSW9M7Ii8mECAwEAAaMdMBswDAYDVR0TAQH/BAIwADALBgNVHQ8EBAMCBsAwDQYJKoZIhvcNAQELBQADggIBAK1bJ6vhkqIF0Y4XnDUFQ/nZUOsQCXbs+czwu62kVaOffHWcKhJ1mTaSwkmFoqykV3VAib7RYKYTXcERow21uGEfnOhNxeSi4l2An7y6PtJOGy4wTjAX++iAeoh+ZDel3VBhvNYv6IZAcsVqdTl0Mfs/E7EuCc6YqumEBTbFTMcp92A31HWHqkI+UnXcogYndsaIK2m+iER6AHhUokfOjOiSJmSEovaXmaJVkmjbv3g07FeMB2fZ8fp3rrRtHjgTzbZyPY2LjhBnV/0vaTnGZH4l1RWZ+dgFn5/09GJJYLgaTBHpuRNBI6JRQ9/iR4NMjOEbNXDIpKibnIg3zG1yqQtUwQBUic0lF958n1KOg7fM+Msgq9Fjg2FY3aI2DAoGWKJR8PTiFbXy+Arpzd669QWzgIusT7KLwlFhKm+a+9dmE2lp0WUj2QH0drJdfSuvqA9ZIu3I0yvnpUT0jlun0PZyoloTOd5X+8z2kLSAxbZaOu9I4XATcwZntZK0FIueh4Htom524ne/MNp6nEXzpxV4HPiW626VoykB4AHJwIp7ljcg8D4IJ7oIF/0UEduwbsx3amAfDeg/9YtPRC4j5M0h3l7zLcJ2/BFwr8qYM74d0v00Hm4msirCPkE+kr58oL1NjwN7vvPA96HbSeBohH+f/X8FcZ965FhmjmZWgj0W" MetodoPago="PUE" SubTotal="2000.00" Total="1740.00" Descuento="500.00" Sello="kSMe94w1MtrcnIdYCW4ATJbguSH/QHig1qBR2+v/lENQhDkmYYGRdWdxYehLPQ9uiQTcxZp26MDuiWIcZcYt6hob6QbrNdZk8fbePDrnsr8IFpuYEZpbp/+SGGlINvPZAJJWsmEe6zGpyxlXoU8EAmTTWTB9MJCMj4LP+OMuc7spD4CN1ZpFkMKQx8xdWJcz6gjgEgKTYa7p77J4yyIF4JA+2DxFR4kUPKXxHlCtU5WV0i7jPK1QpC7YMLFKbuuuVDngrpZVpG7OrcSBlQXyXgUOg2cdflkFH4Ndq4uUSFzRnZ3HWbVNNNzIl609voMYY34PuOICIWKDb5k/w3KWtw==">
<cfdi:Emisor Nombre="XOCHILT CASAS CHAVEZ" Rfc="CACX7605101P8" RegimenFiscal="612"/>
<cfdi:Receptor Rfc="COSC8001137NA" Nombre="Carlos Cortés Soto" UsoCFDI="G01"/>
<cfdi:Conceptos>
<cfdi:Concepto ClaveProdServ="52161557" NoIdentificacion="GAMEPAD007" Cantidad="4" ClaveUnidad="H87" Unidad="PIEZA" Descripcion="Portable tetris gamepad pro++" ValorUnitario="500" Importe="2000" Descuento="500">
<cfdi:Impuestos>
<cfdi:Traslados>
<cfdi:Traslado Base="100" Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.160000" Importe="240"/>
</cfdi:Traslados>
</cfdi:Impuestos>
</cfdi:Concepto>
</cfdi:Conceptos>
<cfdi:Impuestos TotalImpuestosTrasladados="240.00">
<cfdi:Traslados>
<cfdi:Traslado Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.160000" Importe="240.00"/>
</cfdi:Traslados>
</cfdi:Impuestos>
</cfdi:Comprobante>
"""
Saludos!
Creo que hay un problema con las dependencias de tu proyecto, ¿de casualidad forzaste la instalación?
Por lo que veo Eclipxe\XmlSchemaValidator\SchemaValidator
fue introducida en eclipxe/schemavalidator:3.0.0
y eclipxe/cfdiutils
en su versión actual 2.14.0
requiere de eclipxe/xmlschemavalidator:^2.0.2
.
El cambio en esta librería (eclipxe/cfdiutils
) de la dependencia eclipxe/schemavalidator
de la versión 2.x
a la versión 3.x
no se ha realizado. No recuerdo bien si actualizar genera algún tipo de incompatibilidad y por eso aún no ha ocurrido.
¿Podrías por favor confirmar tus dependencias?
PD: Recuerda que tenemos una comunidad en relación a esta librería y las de PhpCfdi en Discord https://discord.gg/aFGYXvX donde podemos platicar de forma más fluida.
Por el mensaje de error, infiero que no estás usando composer
para hacer la instalación de dependencias y estás clonando los repositorios o copiando archivos. Esto te puede llevar a problemas de versiones de dependencias, como el que estás documentando aquí, y a otros más, como tener versiones desactualizadas o archivos no encontrados.
Te recomiendo usar composer
para instalar las dependencias. Solo si no puedes usar composer en tu proyecto, podrías aislar el árbol de dependencias en una carpeta y después intentar cargar el vendor/autoloader.php
generado ahí. Desconozco la efectividad de este método pero lo considero más seguro y mantenible.
Qué tal @eclipxe13!
Tenemos un proyecto donde inyectamos algunas dependencias para poder generarlos por medio de otro Core, pero tienes razón el problema era la versión de schemavalidator!