carloschininin/facturax-contracts
DTOs versionados (Api\V1\Dto) para contratos de la API Facturax. Permite construir y validar localmente payloads JSON antes de enviarlos o persistirlos. Incluye bundle Symfony opcional con servicios de validación y normalización.
Architecture Fit
HttpFoundation, OptionsResolver). The risk is unnecessary coupling if the project doesn’t use Symfony elsewhere.ContractValidator/ContractNormalizer may tighten integration with Symfony’s DI container.Integration Feasibility
symfony/options-resolver and symfony/http-foundation are likely needed for validation/normalization.symfony/console if used elsewhere).platform-check or phpunit/phpunit to test compatibility before full adoption.ComprobanteRequestDto) but lacks profile-specific validators (e.g., BASIC vs. COMMUNICATION). Custom logic may still be needed.Technical Risk
OptionsResolver) at the cost of larger vendor size (~2–5MB) and potential DI complexity.symfony/mailer) could introduce edge cases.array_unpack in attributes) may break older Laravel helpers if misused.PERSONA_MORAL vs. PERSONA_FISICA in Mexico’s CFDI). Requires custom extensions.Key Questions
illuminate/support)?symfony/console, symfony/finder, etc.? How are version constraints managed?ShouldQueue for async invoice generation)?dompdf or spatie/pdf-to-html for invoice rendering?Stack Fit
spatie/laravel-* packages with conflicting Symfony versions).spatie/laravel-data: For structured invoice data (could integrate with Symfony’s OptionsResolver).laravel-queues: For async invoice generation (mitigate Symfony DI overhead).heynemann/laravel-facturae: For CFDI-specific XML generation (if this package lacks full Factura-X coverage).Migration Path
composer why symfony/* to identify conflicts. Resolve with explicit versions:
composer require symfony/options-resolver:^7.1 symfony/http-foundation:^7.1
platform-check to test compatibility).ContractValidator:
use CarlosChininin\FacturaxContracts\Service\ContractValidator;
class InvoiceValidator {
public function __construct(private ContractValidator $validator) {}
public function validate(array $payload): bool {
return $this->validator->validate(new ComprobanteRequestDto(), $payload);
}
}
ContractValidator.OptionsResolver for configurable invoice templates.COMMUNICATION vs. BASIC in CFDI).Compatibility
OptionsResolver/HttpFoundation, conflicts are unlikely.symfony/console or symfony/process, test for CLI command collisions.Doctrine integration if storing invoice metadata (though not part of this package).Sequencing
composer require carloschininin/facturax-contracts:^0.0.2
AppServiceProvider:
$this->app->singleton(
ContractValidator::class,
fn() => new ContractValidator()
);
ContractValidator:
facade(InvoiceValidator::class, InvoiceValidator::class);
Maintenance
OptionsResolver updates).Support
OptionsResolver).How can I help you explore Laravel packages today?