- Add CatalogSaleSummarySerializer and CatalogSummarySaleLineSerializer
- Add CatalogSaleSummary API view for GET requests
- Register endpoint at /don_confiao/resumen_compra_catalogo_json/<id>
- Add comprehensive test for catalog sale summary
- Include nested customer and product details in response
- Endpoint returns id, date, customer, and lines with products
Refactoriza la estructura del proyecto siguiendo principios de Domain-Driven Design,
organizando serializers, API views y servicios por dominios de negocio.
Cambios principales:
## Serializers (serializers/)
- Dividido serializers.py en módulos por dominio:
* products.py: ProductSerializer, ListProductSerializer
* customers.py: CustomerSerializer, ListCustomerSerializer
* sales.py: SaleSerializer, SaleLineSerializer, CatalogSaleSerializer, etc.
* payments.py: ReconciliationJarSerializer, PaymentMethodSerializer
* __init__.py: Exporta todos los serializers para mantener compatibilidad
## API Views (api/)
- Dividido api_views.py en módulos por dominio:
* products.py: ProductView, ProductsFromTrytonView
* customers.py: CustomerView, CustomersFromTrytonView
* sales.py: SaleView, CatalogSaleView, SaleSummary, SalesForTrytonView, SalesToTrytonView
* payments.py: ReconciliateJarView, ReconciliateJarModelView, PaymentMethodView, SalesForReconciliationView
* admin.py: AdminCodeValidateView
* __init__.py: Exporta todas las vistas para facilitar importaciones
## Services Layer (services/tryton/)
- Nueva capa de servicios para lógica de negocio Tryton:
* client.py: get_tryton_client(), TrytonSale, TrytonLineSale, configuración
* products.py: ProductTrytonService - sincronización de productos
* customers.py: CustomerTrytonService - sincronización de clientes
* sales.py: SaleTrytonService - sincronización de ventas
* __init__.py: Exporta servicios y utilidades
## Actualización de URLs
- Actualizado urls.py para importar desde nuevos módulos
- Mantiene todas las rutas existentes sin cambios
## Eliminación de archivos antiguos
- Eliminado serializers.py (refactorizado a serializers/)
- Eliminado api_views.py (refactorizado a api/)
## Beneficios
✅ Cohesión: Código organizado por dominio de negocio
✅ Separación de responsabilidades: API, Serializers y Services separados
✅ Mantenibilidad: Archivos más pequeños y enfocados
✅ Escalabilidad: Fácil agregar nuevos dominios
✅ Testabilidad: Mejor organización para pruebas por dominio
✅ Reutilización: Servicios Tryton pueden usarse desde cualquier vista
## Estructura final:
- models/ (ya existía organizado por dominio)
- serializers/ (nuevo, organizado por dominio)
- api/ (nuevo, organizado por dominio)
- services/tryton/ (nuevo, capa de servicios)
Tests: 46 tests pasando ✓
- Introduced SaleAbstractModel and SaleLineAbstractModel as abstract bases
- Added CatalogSale and CatalogSaleLine models inheriting from them
- Created migration 0045 for new models
- Added CatalogSaleView, CatalogSaleSerializer with nested line creation
- Registered new models in admin
- Added catalog_sales router endpoint to URLs
- Removed placeholder api/ package (now redundant)
- Split monolithic models.py into models/ package (customers, products, sales, payments, admin)
- Removed forms.py, all HTML templates, and associated template-based views
- Added api/ package with CatalogSaleView placeholder
- Updated all imports across project to use new model paths
- Removed obsolete tests (form, export, purchase, summary tests)
- Removed template-based URL patterns, kept only API endpoints
- Standardized string quotes (single to double) and reformatted code