Skip to content

Commit 98bbae2

Browse files
authored
Merge pull request #51 from eclipxe13/version-0.4.5
Propuesta de compatibilidad versión 0.4.5
2 parents e104c36 + 248c6a3 commit 98bbae2

File tree

7 files changed

+23
-7
lines changed

7 files changed

+23
-7
lines changed

docs/CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,15 @@ que nombraremos así: ` Breaking . Feature . Fix `, donde:
1414
**Importante:** Las reglas de SEMVER no aplican si estás usando una rama (por ejemplo `main-dev`)
1515
o estás usando una versión cero (por ejemplo `0.18.4`).
1616

17+
## Versión 0.4.5 2022-03-22
18+
19+
Se compatibilizó la colocación de una consulta con el servicio de solicitud de descargas masivas
20+
*para CFDI de Retenciones e Información de Pagos*, anteriormente, al solicitar XML el valor del
21+
atributo `TipoSolicitud` debía ser `CFDI` y ahora debe ser `Retencion`.
22+
23+
Este cambio altera la API pública, pero no se considera un cambio que rompa la compatibilidad
24+
porque el cambio ocurrió sobre la clase `QueryTranslator` marcada como `@internal`.
25+
1726
## Versión 0.4.4 2022-03-12
1827

1928
Se actualizó el servicio de solicitud de descargas masivas (consulta) a la versión 1.2 del SAT.

src/RequestBuilder/Exceptions/RequestTypeInvalidException.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ final class RequestTypeInvalidException extends LogicException implements Reques
1414

1515
public function __construct(string $requestType)
1616
{
17-
parent::__construct(sprintf('The request type "%s" is not CFDI or Metadata', $requestType));
17+
parent::__construct(sprintf('The request type "%s" is not CFDI, Retencion or Metadata', $requestType));
1818
$this->requestType = $requestType;
1919
}
2020

src/RequestBuilder/FielRequestBuilder/FielRequestBuilder.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ public function query(string $start, string $end, string $rfcIssuer, string $rfc
9797
if (! in_array($rfcSigner, [$rfcReceiver, $rfcIssuer], true)) {
9898
throw new RfcIsNotIssuerOrReceiverException($rfcSigner, $rfcIssuer, $rfcReceiver);
9999
}
100-
if (! in_array($requestType, ['CFDI', 'Metadata'], true)) {
100+
if (! in_array($requestType, ['CFDI', 'Retencion', 'Metadata'], true)) {
101101
throw new RequestTypeInvalidException($requestType);
102102
}
103103

src/Service.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,8 @@ public function authenticate(): Token
9595
public function query(QueryParameters $parameters): QueryResult
9696
{
9797
$queryTranslator = new QueryTranslator();
98-
$soapBody = $queryTranslator->createSoapRequest($this->requestBuilder, $parameters);
98+
$isRetenciones = $this->endpoints->getQuery() === ServiceEndpoints::retenciones()->getQuery();
99+
$soapBody = $queryTranslator->createSoapRequest($this->requestBuilder, $parameters, $isRetenciones);
99100
$responseBody = $this->consume(
100101
'http://DescargaMasivaTerceros.sat.gob.mx/ISolicitaDescargaService/SolicitaDescarga',
101102
$this->endpoints->getQuery(),

src/Services/Query/QueryTranslator.php

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,19 @@ public function createQueryResultFromSoapResponse(string $content): QueryResult
2323
return new QueryResult($status, $requestId);
2424
}
2525

26-
public function createSoapRequest(RequestBuilderInterface $requestBuilder, QueryParameters $parameters): string
27-
{
26+
public function createSoapRequest(
27+
RequestBuilderInterface $requestBuilder,
28+
QueryParameters $parameters,
29+
bool $isRetenciones
30+
): string {
2831
$start = $parameters->getPeriod()->getStart()->format('Y-m-d\TH:i:s');
2932
$end = $parameters->getPeriod()->getEnd()->format('Y-m-d\TH:i:s');
3033
$rfcIssuer = $parameters->getDownloadType()->isIssued() ? RequestBuilderInterface::USE_SIGNER : $parameters->getRfcMatch();
3134
$rfcReceiver = $parameters->getDownloadType()->isReceived() ? RequestBuilderInterface::USE_SIGNER : $parameters->getRfcMatch();
3235
$requestType = $parameters->getRequestType()->value();
36+
if ($parameters->getRequestType()->isCfdi() && $isRetenciones) {
37+
$requestType = 'Retencion';
38+
}
3339

3440
/** @noinspection PhpUnhandledExceptionInspection */
3541
return $requestBuilder->query($start, $end, $rfcIssuer, $rfcReceiver, $requestType);

tests/Unit/RequestBuilder/Exceptions/RequestTypeInvalidExceptionTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public function testGetProperties(): void
2020
{
2121
$requestType = 'foo';
2222
$exception = new RequestTypeInvalidException($requestType);
23-
$this->assertSame('The request type "foo" is not CFDI or Metadata', $exception->getMessage());
23+
$this->assertSame('The request type "foo" is not CFDI, Retencion or Metadata', $exception->getMessage());
2424
$this->assertSame($requestType, $exception->getRequestType());
2525
}
2626
}

tests/Unit/Services/Query/QueryTranslatorTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public function testCreateSoapRequest(): void
4242
RequestType::cfdi()
4343
);
4444

45-
$requestBody = $translator->createSoapRequest($requestBuilder, $query);
45+
$requestBody = $translator->createSoapRequest($requestBuilder, $query, false);
4646
$this->assertSame(
4747
$this->xmlFormat(Helpers::nospaces($this->fileContents('query/request-received.xml'))),
4848
$this->xmlFormat($requestBody)

0 commit comments

Comments
 (0)